@@ -384,32 +384,31 @@ pub(crate) fn init<T: 'static>(
384384 "fd_prestat_get" ,
385385 |mut caller : Caller < ' _ , _ > , fd : i32 , prestat_ptr : i32 | {
386386 let guard = FD . lock ( ) . unwrap ( ) ;
387- if fd < guard. len ( ) . try_into ( ) . unwrap ( ) {
388- if let Some ( Extern :: Memory ( mem) ) = caller. get_export ( "memory" ) {
389- if let Descriptor :: Directory ( name) = & guard[ fd as usize ] {
390- let stat = Prestat {
391- tag : PREOPENTYPE_DIR . raw ( ) ,
392- u : PrestatU {
393- dir : PrestatDir {
394- pr_name_len : name. len ( ) ,
395- } ,
396- } ,
397- } ;
387+ if fd < guard. len ( ) . try_into ( ) . unwrap ( )
388+ && let Some ( Extern :: Memory ( mem) ) = caller. get_export ( "memory" )
389+ && let Descriptor :: Directory ( name) = & guard[ fd as usize ]
390+ {
391+ let stat = Prestat {
392+ tag : PREOPENTYPE_DIR . raw ( ) ,
393+ u : PrestatU {
394+ dir : PrestatDir {
395+ pr_name_len : name. len ( ) ,
396+ } ,
397+ } ,
398+ } ;
398399
399- let _ = mem. write (
400- caller. as_context_mut ( ) ,
401- prestat_ptr. try_into ( ) . unwrap ( ) ,
402- unsafe {
403- std:: slice:: from_raw_parts (
404- ( & stat as * const _ ) as * const u8 ,
405- size_of :: < Prestat > ( ) ,
406- )
407- } ,
408- ) ;
400+ let _ = mem. write (
401+ caller. as_context_mut ( ) ,
402+ prestat_ptr. try_into ( ) . unwrap ( ) ,
403+ unsafe {
404+ std:: slice:: from_raw_parts (
405+ ( & stat as * const _ ) as * const u8 ,
406+ size_of :: < Prestat > ( ) ,
407+ )
408+ } ,
409+ ) ;
409410
410- return ERRNO_SUCCESS . raw ( ) as i32 ;
411- }
412- }
411+ return ERRNO_SUCCESS . raw ( ) as i32 ;
413412 }
414413
415414 ERRNO_BADF . raw ( ) as i32
@@ -422,22 +421,20 @@ pub(crate) fn init<T: 'static>(
422421 "fd_tell" ,
423422 |mut caller : Caller < ' _ , _ > , fd : i32 , offset_ptr : i32 | {
424423 let guard = FD . lock ( ) . unwrap ( ) ;
425- if fd < guard. len ( ) . try_into ( ) . unwrap ( ) {
426- if let Descriptor :: File ( file) = & guard[ fd as usize ] {
427- if let Some ( Extern :: Memory ( mem) ) = caller. get_export ( "memory" ) {
428- let offset =
429- unsafe { hermit_abi:: lseek ( file. raw_fd , 0 , hermit_abi:: SEEK_CUR ) } ;
424+ if fd < guard. len ( ) . try_into ( ) . unwrap ( )
425+ && let Descriptor :: File ( file) = & guard[ fd as usize ]
426+ && let Some ( Extern :: Memory ( mem) ) = caller. get_export ( "memory" )
427+ {
428+ let offset = unsafe { hermit_abi:: lseek ( file. raw_fd , 0 , hermit_abi:: SEEK_CUR ) } ;
430429
431- if offset > 0 {
432- let _ = mem. write (
433- caller. as_context_mut ( ) ,
434- offset_ptr. try_into ( ) . unwrap ( ) ,
435- offset. as_bytes ( ) ,
436- ) ;
430+ if offset > 0 {
431+ let _ = mem. write (
432+ caller. as_context_mut ( ) ,
433+ offset_ptr. try_into ( ) . unwrap ( ) ,
434+ offset. as_bytes ( ) ,
435+ ) ;
437436
438- return ERRNO_SUCCESS . raw ( ) as i32 ;
439- }
440- }
437+ return ERRNO_SUCCESS . raw ( ) as i32 ;
441438 }
442439 }
443440
@@ -451,25 +448,25 @@ pub(crate) fn init<T: 'static>(
451448 "fd_prestat_dir_name" ,
452449 |mut caller : Caller < ' _ , _ > , fd : i32 , path_ptr : i32 , path_len : i32 | {
453450 let guard = FD . lock ( ) . unwrap ( ) ;
454- if fd < guard. len ( ) . try_into ( ) . unwrap ( ) {
455- if let Descriptor :: Directory ( path) = & guard[ fd as usize ] {
456- if let Some ( Extern :: Memory ( mem) ) = caller. get_export (
457- "memory
451+ if fd < guard. len ( ) . try_into ( ) . unwrap ( )
452+ && let Descriptor :: Directory ( path) = & guard[ fd as usize ]
453+ {
454+ if let Some ( Extern :: Memory ( mem) ) = caller. get_export (
455+ "memory
458456" ,
459- ) {
460- if path_len < path. len ( ) . try_into ( ) . unwrap ( ) {
461- return ERRNO_INVAL . raw ( ) as i32 ;
462- }
463-
464- let _ = mem. write (
465- caller. as_context_mut ( ) ,
466- path_ptr. try_into ( ) . unwrap ( ) ,
467- path. as_bytes ( ) ,
468- ) ;
457+ ) {
458+ if path_len < path. len ( ) . try_into ( ) . unwrap ( ) {
459+ return ERRNO_INVAL . raw ( ) as i32 ;
469460 }
470461
471- return ERRNO_SUCCESS . raw ( ) as i32 ;
462+ let _ = mem. write (
463+ caller. as_context_mut ( ) ,
464+ path_ptr. try_into ( ) . unwrap ( ) ,
465+ path. as_bytes ( ) ,
466+ ) ;
472467 }
468+
469+ return ERRNO_SUCCESS . raw ( ) as i32 ;
473470 }
474471
475472 ERRNO_BADF . raw ( ) as i32
@@ -479,13 +476,13 @@ pub(crate) fn init<T: 'static>(
479476 linker
480477 . func_wrap ( "wasi_snapshot_preview1" , "fd_close" , |fd : i32 | {
481478 let mut guard = FD . lock ( ) . unwrap ( ) ;
482- if fd < guard. len ( ) . try_into ( ) . unwrap ( ) {
483- if let Descriptor :: File ( file) = & guard[ fd as usize ] {
484- unsafe {
485- hermit_abi:: close ( file. raw_fd ) ;
486- }
487- guard[ fd as usize ] = Descriptor :: None ;
479+ if fd < guard. len ( ) . try_into ( ) . unwrap ( )
480+ && let Descriptor :: File ( file) = & guard[ fd as usize ]
481+ {
482+ unsafe {
483+ hermit_abi:: close ( file. raw_fd ) ;
488484 }
485+ guard[ fd as usize ] = Descriptor :: None ;
489486 }
490487
491488 ERRNO_SUCCESS . raw ( ) as i32
0 commit comments