1
1
use std:: any:: TypeId ;
2
2
use std:: cell:: { Cell , UnsafeCell } ;
3
- use std:: ffi:: { CStr , CString } ;
3
+ use std:: ffi:: CStr ;
4
4
use std:: mem;
5
5
use std:: os:: raw:: { c_char, c_int, c_void} ;
6
6
use std:: panic:: resume_unwind;
@@ -1351,16 +1351,14 @@ impl RawLua {
1351
1351
1352
1352
// Uses 3 stack spaces
1353
1353
unsafe fn load_std_libs ( state : * mut ffi:: lua_State , libs : StdLib ) -> Result < ( ) > {
1354
- #[ inline( always) ]
1355
- pub unsafe fn requiref (
1354
+ unsafe fn requiref (
1356
1355
state : * mut ffi:: lua_State ,
1357
- modname : & str ,
1356
+ modname : * const c_char ,
1358
1357
openf : ffi:: lua_CFunction ,
1359
1358
glb : c_int ,
1360
1359
) -> Result < ( ) > {
1361
- let modname = mlua_expect ! ( CString :: new( modname) , "modname contains nil byte" ) ;
1362
- protect_lua ! ( state, 0 , 1 , |state| {
1363
- ffi:: luaL_requiref( state, modname. as_ptr( ) as * const c_char, openf, glb)
1360
+ protect_lua ! ( state, 0 , 0 , |state| {
1361
+ ffi:: luaL_requiref( state, modname, openf, glb)
1364
1362
} )
1365
1363
}
1366
1364
@@ -1391,81 +1389,68 @@ unsafe fn load_std_libs(state: *mut ffi::lua_State, libs: StdLib) -> Result<()>
1391
1389
{
1392
1390
if libs. contains ( StdLib :: COROUTINE ) {
1393
1391
requiref ( state, ffi:: LUA_COLIBNAME , ffi:: luaopen_coroutine, 1 ) ?;
1394
- ffi:: lua_pop ( state, 1 ) ;
1395
1392
}
1396
1393
}
1397
1394
1398
1395
if libs. contains ( StdLib :: TABLE ) {
1399
1396
requiref ( state, ffi:: LUA_TABLIBNAME , ffi:: luaopen_table, 1 ) ?;
1400
- ffi:: lua_pop ( state, 1 ) ;
1401
1397
}
1402
1398
1403
1399
#[ cfg( not( feature = "luau" ) ) ]
1404
1400
if libs. contains ( StdLib :: IO ) {
1405
1401
requiref ( state, ffi:: LUA_IOLIBNAME , ffi:: luaopen_io, 1 ) ?;
1406
- ffi:: lua_pop ( state, 1 ) ;
1407
1402
}
1408
1403
1409
1404
if libs. contains ( StdLib :: OS ) {
1410
1405
requiref ( state, ffi:: LUA_OSLIBNAME , ffi:: luaopen_os, 1 ) ?;
1411
- ffi:: lua_pop ( state, 1 ) ;
1412
1406
}
1413
1407
1414
1408
if libs. contains ( StdLib :: STRING ) {
1415
1409
requiref ( state, ffi:: LUA_STRLIBNAME , ffi:: luaopen_string, 1 ) ?;
1416
- ffi:: lua_pop ( state, 1 ) ;
1417
1410
}
1418
1411
1419
1412
#[ cfg( any( feature = "lua54" , feature = "lua53" , feature = "luau" ) ) ]
1420
1413
{
1421
1414
if libs. contains ( StdLib :: UTF8 ) {
1422
1415
requiref ( state, ffi:: LUA_UTF8LIBNAME , ffi:: luaopen_utf8, 1 ) ?;
1423
- ffi:: lua_pop ( state, 1 ) ;
1424
1416
}
1425
1417
}
1426
1418
1427
1419
#[ cfg( any( feature = "lua52" , feature = "luau" ) ) ]
1428
1420
{
1429
1421
if libs. contains ( StdLib :: BIT ) {
1430
1422
requiref ( state, ffi:: LUA_BITLIBNAME , ffi:: luaopen_bit32, 1 ) ?;
1431
- ffi:: lua_pop ( state, 1 ) ;
1432
1423
}
1433
1424
}
1434
1425
1435
1426
#[ cfg( feature = "luajit" ) ]
1436
1427
{
1437
1428
if libs. contains ( StdLib :: BIT ) {
1438
1429
requiref ( state, ffi:: LUA_BITLIBNAME , ffi:: luaopen_bit, 1 ) ?;
1439
- ffi:: lua_pop ( state, 1 ) ;
1440
1430
}
1441
1431
}
1442
1432
1443
1433
#[ cfg( feature = "luau" ) ]
1444
1434
if libs. contains ( StdLib :: BUFFER ) {
1445
1435
requiref ( state, ffi:: LUA_BUFFERLIBNAME , ffi:: luaopen_buffer, 1 ) ?;
1446
- ffi:: lua_pop ( state, 1 ) ;
1447
1436
}
1448
1437
1449
1438
#[ cfg( feature = "luau" ) ]
1450
1439
if libs. contains ( StdLib :: VECTOR ) {
1451
1440
requiref ( state, ffi:: LUA_VECLIBNAME , ffi:: luaopen_vector, 1 ) ?;
1452
- ffi:: lua_pop ( state, 1 ) ;
1453
1441
}
1454
1442
1455
1443
if libs. contains ( StdLib :: MATH ) {
1456
1444
requiref ( state, ffi:: LUA_MATHLIBNAME , ffi:: luaopen_math, 1 ) ?;
1457
- ffi:: lua_pop ( state, 1 ) ;
1458
1445
}
1459
1446
1460
1447
if libs. contains ( StdLib :: DEBUG ) {
1461
1448
requiref ( state, ffi:: LUA_DBLIBNAME , ffi:: luaopen_debug, 1 ) ?;
1462
- ffi:: lua_pop ( state, 1 ) ;
1463
1449
}
1464
1450
1465
1451
#[ cfg( not( feature = "luau" ) ) ]
1466
1452
if libs. contains ( StdLib :: PACKAGE ) {
1467
1453
requiref ( state, ffi:: LUA_LOADLIBNAME , ffi:: luaopen_package, 1 ) ?;
1468
- ffi:: lua_pop ( state, 1 ) ;
1469
1454
}
1470
1455
#[ cfg( feature = "luau" ) ]
1471
1456
if libs. contains ( StdLib :: PACKAGE ) {
@@ -1476,13 +1461,11 @@ unsafe fn load_std_libs(state: *mut ffi::lua_State, libs: StdLib) -> Result<()>
1476
1461
#[ cfg( feature = "luajit" ) ]
1477
1462
if libs. contains ( StdLib :: JIT ) {
1478
1463
requiref ( state, ffi:: LUA_JITLIBNAME , ffi:: luaopen_jit, 1 ) ?;
1479
- ffi:: lua_pop ( state, 1 ) ;
1480
1464
}
1481
1465
1482
1466
#[ cfg( feature = "luajit" ) ]
1483
1467
if libs. contains ( StdLib :: FFI ) {
1484
1468
requiref ( state, ffi:: LUA_FFILIBNAME , ffi:: luaopen_ffi, 1 ) ?;
1485
- ffi:: lua_pop ( state, 1 ) ;
1486
1469
}
1487
1470
1488
1471
Ok ( ( ) )
0 commit comments