@@ -13,13 +13,11 @@ pub fn validate<T: AsRef<[u8]>>(input: T) -> bool {
1313 unsafe { sys:: fizzy_validate ( input. as_ref ( ) . as_ptr ( ) , input. as_ref ( ) . len ( ) ) }
1414}
1515
16- pub struct Module {
17- ptr : NonNull < sys:: FizzyModule > ,
18- }
16+ pub struct Module ( * const sys:: FizzyModule ) ;
1917
2018impl Drop for Module {
2119 fn drop ( & mut self ) {
22- unsafe { sys:: fizzy_free_module ( self . ptr . as_ptr ( ) ) }
20+ unsafe { sys:: fizzy_free_module ( self . 0 ) }
2321 }
2422}
2523
@@ -28,32 +26,31 @@ pub fn parse<T: AsRef<[u8]>>(input: &T) -> Result<Module, ()> {
2826 if ptr. is_null ( ) {
2927 return Err ( ( ) ) ;
3028 }
31- Ok ( Module {
32- ptr : unsafe { NonNull :: new_unchecked ( ptr as * mut sys:: FizzyModule ) } ,
33- } )
29+ Ok ( Module { 0 : ptr } )
3430}
3531
36- pub struct Instance {
37- ptr : NonNull < sys:: FizzyInstance > ,
38- }
32+ pub struct Instance ( NonNull < sys:: FizzyInstance > ) ;
3933
4034impl Drop for Instance {
4135 fn drop ( & mut self ) {
42- unsafe { sys:: fizzy_free_instance ( self . ptr . as_ptr ( ) ) }
36+ unsafe { sys:: fizzy_free_instance ( self . 0 . as_ptr ( ) ) }
4337 }
4438}
4539
4640impl Module {
4741 // TODO: support imported functions
4842 pub fn instantiate ( self ) -> Result < Instance , ( ) > {
49- let ptr = unsafe { sys:: fizzy_instantiate ( self . ptr . as_ptr ( ) , std:: ptr:: null ( ) , 0 ) } ;
43+ if self . 0 . is_null ( ) {
44+ return Err ( ( ) ) ;
45+ }
46+ let ptr = unsafe { sys:: fizzy_instantiate ( self . 0 , std:: ptr:: null ( ) , 0 ) } ;
5047 // Forget Module (and avoid calling drop) because it has been consumed by instantiate (even if it failed).
5148 core:: mem:: forget ( self ) ;
5249 if ptr. is_null ( ) {
5350 return Err ( ( ) ) ;
5451 }
5552 Ok ( Instance {
56- ptr : unsafe { NonNull :: new_unchecked ( ptr) } ,
53+ 0 : unsafe { NonNull :: new_unchecked ( ptr) } ,
5754 } )
5855 }
5956}
@@ -148,7 +145,7 @@ impl Instance {
148145 depth : i32 ,
149146 ) -> ExecutionResult {
150147 ExecutionResult {
151- 0 : sys:: fizzy_execute ( self . ptr . as_ptr ( ) , func_idx, args. as_ptr ( ) , depth) ,
148+ 0 : sys:: fizzy_execute ( self . 0 . as_ptr ( ) , func_idx, args. as_ptr ( ) , depth) ,
152149 }
153150 }
154151}
0 commit comments