@@ -485,7 +485,7 @@ impl Lua {
485
485
let lua = self . lock ( ) ;
486
486
unsafe {
487
487
if ( * lua. extra . get ( ) ) . sandboxed != enabled {
488
- let state = lua. main_state ;
488
+ let state = lua. main_state ( ) ;
489
489
check_stack ( state, 3 ) ?;
490
490
protect_lua ! ( state, 0 , 0 , |state| {
491
491
if enabled {
@@ -562,10 +562,10 @@ impl Lua {
562
562
unsafe {
563
563
let state = lua. state ( ) ;
564
564
ffi:: lua_sethook ( state, None , 0 , 0 ) ;
565
- match crate :: util :: get_main_state ( lua. main_state ) {
566
- Some ( main_state) if !ptr :: eq ( state, main_state) => {
565
+ match lua. main_state {
566
+ Some ( main_state) if state != main_state. as_ptr ( ) => {
567
567
// If main_state is different from state, remove hook from it too
568
- ffi:: lua_sethook ( main_state, None , 0 , 0 ) ;
568
+ ffi:: lua_sethook ( main_state. as_ptr ( ) , None , 0 , 0 ) ;
569
569
}
570
570
_ => { }
571
571
} ;
@@ -654,7 +654,7 @@ impl Lua {
654
654
let lua = self . lock ( ) ;
655
655
unsafe {
656
656
( * lua. extra . get ( ) ) . interrupt_callback = Some ( Rc :: new ( callback) ) ;
657
- ( * ffi:: lua_callbacks ( lua. main_state ) ) . interrupt = Some ( interrupt_proc) ;
657
+ ( * ffi:: lua_callbacks ( lua. main_state ( ) ) ) . interrupt = Some ( interrupt_proc) ;
658
658
}
659
659
}
660
660
@@ -667,7 +667,7 @@ impl Lua {
667
667
let lua = self . lock ( ) ;
668
668
unsafe {
669
669
( * lua. extra . get ( ) ) . interrupt_callback = None ;
670
- ( * ffi:: lua_callbacks ( lua. main_state ) ) . interrupt = None ;
670
+ ( * ffi:: lua_callbacks ( lua. main_state ( ) ) ) . interrupt = None ;
671
671
}
672
672
}
673
673
@@ -697,10 +697,9 @@ impl Lua {
697
697
}
698
698
699
699
let lua = self . lock ( ) ;
700
- let state = lua. main_state ;
701
700
unsafe {
702
701
( * lua. extra . get ( ) ) . warn_callback = Some ( Box :: new ( callback) ) ;
703
- ffi:: lua_setwarnf ( state, Some ( warn_proc) , lua. extra . get ( ) as * mut c_void ) ;
702
+ ffi:: lua_setwarnf ( lua . state ( ) , Some ( warn_proc) , lua. extra . get ( ) as * mut c_void ) ;
704
703
}
705
704
}
706
705
@@ -715,7 +714,7 @@ impl Lua {
715
714
let lua = self . lock ( ) ;
716
715
unsafe {
717
716
( * lua. extra . get ( ) ) . warn_callback = None ;
718
- ffi:: lua_setwarnf ( lua. main_state , None , ptr:: null_mut ( ) ) ;
717
+ ffi:: lua_setwarnf ( lua. state ( ) , None , ptr:: null_mut ( ) ) ;
719
718
}
720
719
}
721
720
@@ -767,13 +766,14 @@ impl Lua {
767
766
/// Returns the amount of memory (in bytes) currently used inside this Lua state.
768
767
pub fn used_memory ( & self ) -> usize {
769
768
let lua = self . lock ( ) ;
769
+ let state = lua. main_state ( ) ;
770
770
unsafe {
771
- match MemoryState :: get ( lua . main_state ) {
771
+ match MemoryState :: get ( state ) {
772
772
mem_state if !mem_state. is_null ( ) => ( * mem_state) . used_memory ( ) ,
773
773
_ => {
774
774
// Get data from the Lua GC
775
- let used_kbytes = ffi:: lua_gc ( lua . main_state , ffi:: LUA_GCCOUNT , 0 ) ;
776
- let used_kbytes_rem = ffi:: lua_gc ( lua . main_state , ffi:: LUA_GCCOUNTB , 0 ) ;
775
+ let used_kbytes = ffi:: lua_gc ( state , ffi:: LUA_GCCOUNT , 0 ) ;
776
+ let used_kbytes_rem = ffi:: lua_gc ( state , ffi:: LUA_GCCOUNTB , 0 ) ;
777
777
( used_kbytes as usize ) * 1024 + ( used_kbytes_rem as usize )
778
778
}
779
779
}
@@ -790,7 +790,7 @@ impl Lua {
790
790
pub fn set_memory_limit ( & self , limit : usize ) -> Result < usize > {
791
791
let lua = self . lock ( ) ;
792
792
unsafe {
793
- match MemoryState :: get ( lua. main_state ) {
793
+ match MemoryState :: get ( lua. state ( ) ) {
794
794
mem_state if !mem_state. is_null ( ) => Ok ( ( * mem_state) . set_memory_limit ( limit) ) ,
795
795
_ => Err ( Error :: MemoryControlNotAvailable ) ,
796
796
}
@@ -803,19 +803,19 @@ impl Lua {
803
803
#[ cfg( any( feature = "lua54" , feature = "lua53" , feature = "lua52" , feature = "luau" ) ) ]
804
804
pub fn gc_is_running ( & self ) -> bool {
805
805
let lua = self . lock ( ) ;
806
- unsafe { ffi:: lua_gc ( lua. main_state , ffi:: LUA_GCISRUNNING , 0 ) != 0 }
806
+ unsafe { ffi:: lua_gc ( lua. main_state ( ) , ffi:: LUA_GCISRUNNING , 0 ) != 0 }
807
807
}
808
808
809
809
/// Stop the Lua GC from running
810
810
pub fn gc_stop ( & self ) {
811
811
let lua = self . lock ( ) ;
812
- unsafe { ffi:: lua_gc ( lua. main_state , ffi:: LUA_GCSTOP , 0 ) } ;
812
+ unsafe { ffi:: lua_gc ( lua. main_state ( ) , ffi:: LUA_GCSTOP , 0 ) } ;
813
813
}
814
814
815
815
/// Restarts the Lua GC if it is not running
816
816
pub fn gc_restart ( & self ) {
817
817
let lua = self . lock ( ) ;
818
- unsafe { ffi:: lua_gc ( lua. main_state , ffi:: LUA_GCRESTART , 0 ) } ;
818
+ unsafe { ffi:: lua_gc ( lua. main_state ( ) , ffi:: LUA_GCRESTART , 0 ) } ;
819
819
}
820
820
821
821
/// Perform a full garbage-collection cycle.
@@ -824,9 +824,10 @@ impl Lua {
824
824
/// objects. Once to finish the current gc cycle, and once to start and finish the next cycle.
825
825
pub fn gc_collect ( & self ) -> Result < ( ) > {
826
826
let lua = self . lock ( ) ;
827
+ let state = lua. main_state ( ) ;
827
828
unsafe {
828
- check_stack ( lua . main_state , 2 ) ?;
829
- protect_lua ! ( lua . main_state , 0 , 0 , fn ( state) ffi:: lua_gc( state, ffi:: LUA_GCCOLLECT , 0 ) )
829
+ check_stack ( state , 2 ) ?;
830
+ protect_lua ! ( state , 0 , 0 , fn ( state) ffi:: lua_gc( state, ffi:: LUA_GCCOLLECT , 0 ) )
830
831
}
831
832
}
832
833
@@ -843,9 +844,10 @@ impl Lua {
843
844
/// finished a collection cycle.
844
845
pub fn gc_step_kbytes ( & self , kbytes : c_int ) -> Result < bool > {
845
846
let lua = self . lock ( ) ;
847
+ let state = lua. main_state ( ) ;
846
848
unsafe {
847
- check_stack ( lua . main_state , 3 ) ?;
848
- protect_lua ! ( lua . main_state , 0 , 0 , |state| {
849
+ check_stack ( state , 3 ) ?;
850
+ protect_lua ! ( state , 0 , 0 , |state| {
849
851
ffi:: lua_gc( state, ffi:: LUA_GCSTEP , kbytes) != 0
850
852
} )
851
853
}
@@ -861,11 +863,12 @@ impl Lua {
861
863
/// [documentation]: https://www.lua.org/manual/5.4/manual.html#2.5
862
864
pub fn gc_set_pause ( & self , pause : c_int ) -> c_int {
863
865
let lua = self . lock ( ) ;
866
+ let state = lua. main_state ( ) ;
864
867
unsafe {
865
868
#[ cfg( not( feature = "luau" ) ) ]
866
- return ffi:: lua_gc ( lua . main_state , ffi:: LUA_GCSETPAUSE , pause) ;
869
+ return ffi:: lua_gc ( state , ffi:: LUA_GCSETPAUSE , pause) ;
867
870
#[ cfg( feature = "luau" ) ]
868
- return ffi:: lua_gc ( lua . main_state , ffi:: LUA_GCSETGOAL , pause) ;
871
+ return ffi:: lua_gc ( state , ffi:: LUA_GCSETGOAL , pause) ;
869
872
}
870
873
}
871
874
@@ -877,7 +880,7 @@ impl Lua {
877
880
/// [documentation]: https://www.lua.org/manual/5.4/manual.html#2.5
878
881
pub fn gc_set_step_multiplier ( & self , step_multiplier : c_int ) -> c_int {
879
882
let lua = self . lock ( ) ;
880
- unsafe { ffi:: lua_gc ( lua. main_state , ffi:: LUA_GCSETSTEPMUL , step_multiplier) }
883
+ unsafe { ffi:: lua_gc ( lua. main_state ( ) , ffi:: LUA_GCSETSTEPMUL , step_multiplier) }
881
884
}
882
885
883
886
/// Changes the collector to incremental mode with the given parameters.
@@ -888,7 +891,7 @@ impl Lua {
888
891
/// [documentation]: https://www.lua.org/manual/5.4/manual.html#2.5.1
889
892
pub fn gc_inc ( & self , pause : c_int , step_multiplier : c_int , step_size : c_int ) -> GCMode {
890
893
let lua = self . lock ( ) ;
891
- let state = lua. main_state ;
894
+ let state = lua. main_state ( ) ;
892
895
893
896
#[ cfg( any(
894
897
feature = "lua53" ,
@@ -941,7 +944,7 @@ impl Lua {
941
944
#[ cfg_attr( docsrs, doc( cfg( feature = "lua54" ) ) ) ]
942
945
pub fn gc_gen ( & self , minor_multiplier : c_int , major_multiplier : c_int ) -> GCMode {
943
946
let lua = self . lock ( ) ;
944
- let state = lua. main_state ;
947
+ let state = lua. main_state ( ) ;
945
948
let prev_mode = unsafe { ffi:: lua_gc ( state, ffi:: LUA_GCGEN , minor_multiplier, major_multiplier) } ;
946
949
match prev_mode {
947
950
ffi:: LUA_GCGEN => GCMode :: Generational ,
0 commit comments