@@ -326,20 +326,21 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
326
326
this. reject_in_isolation ( "getcwd" , reject_with) ?;
327
327
let err = Error :: new ( ErrorKind :: NotFound , "rejected due to isolation" ) ;
328
328
this. set_last_error_from_io_error ( err) ?;
329
- } else {
330
- let buf = this. read_scalar ( & buf_op) ?. check_init ( ) ?;
331
- let size = this. read_scalar ( & size_op) ?. to_machine_usize ( & * this. tcx ) ?;
332
- // If we cannot get the current directory, we return null
333
- match env:: current_dir ( ) {
334
- Ok ( cwd) => {
335
- if this. write_path_to_c_str ( & cwd, buf, size) ?. 0 {
336
- return Ok ( buf) ;
337
- }
338
- let erange = this. eval_libc ( "ERANGE" ) ?;
339
- this. set_last_error ( erange) ?;
329
+ return Ok ( Scalar :: null_ptr ( & * this. tcx ) ) ;
330
+ }
331
+
332
+ let buf = this. read_scalar ( & buf_op) ?. check_init ( ) ?;
333
+ let size = this. read_scalar ( & size_op) ?. to_machine_usize ( & * this. tcx ) ?;
334
+ // If we cannot get the current directory, we return null
335
+ match env:: current_dir ( ) {
336
+ Ok ( cwd) => {
337
+ if this. write_path_to_c_str ( & cwd, buf, size) ?. 0 {
338
+ return Ok ( buf) ;
340
339
}
341
- Err ( e) => this. set_last_error_from_io_error ( e) ?,
340
+ let erange = this. eval_libc ( "ERANGE" ) ?;
341
+ this. set_last_error ( erange) ?;
342
342
}
343
+ Err ( e) => this. set_last_error_from_io_error ( e) ?,
343
344
}
344
345
345
346
Ok ( Scalar :: null_ptr ( & * this. tcx ) )
@@ -358,18 +359,19 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
358
359
this. reject_in_isolation ( "GetCurrentDirectoryW" , reject_with) ?;
359
360
let err = Error :: new ( ErrorKind :: NotFound , "rejected due to isolation" ) ;
360
361
this. set_last_error_from_io_error ( err) ?;
361
- } else {
362
- let size = u64:: from ( this. read_scalar ( size_op) ?. to_u32 ( ) ?) ;
363
- let buf = this. read_scalar ( buf_op) ?. check_init ( ) ?;
364
-
365
- // If we cannot get the current directory, we return 0
366
- match env:: current_dir ( ) {
367
- Ok ( cwd) =>
368
- return Ok ( windows_check_buffer_size (
369
- this. write_path_to_wide_str ( & cwd, buf, size) ?,
370
- ) ) ,
371
- Err ( e) => this. set_last_error_from_io_error ( e) ?,
372
- }
362
+ return Ok ( 0 ) ;
363
+ }
364
+
365
+ let size = u64:: from ( this. read_scalar ( size_op) ?. to_u32 ( ) ?) ;
366
+ let buf = this. read_scalar ( buf_op) ?. check_init ( ) ?;
367
+
368
+ // If we cannot get the current directory, we return 0
369
+ match env:: current_dir ( ) {
370
+ Ok ( cwd) =>
371
+ return Ok ( windows_check_buffer_size (
372
+ this. write_path_to_wide_str ( & cwd, buf, size) ?,
373
+ ) ) ,
374
+ Err ( e) => this. set_last_error_from_io_error ( e) ?,
373
375
}
374
376
Ok ( 0 )
375
377
}
@@ -387,16 +389,16 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
387
389
let err = Error :: new ( ErrorKind :: NotFound , "rejected due to isolation" ) ;
388
390
this. set_last_error_from_io_error ( err) ?;
389
391
390
- Ok ( -1 )
391
- } else {
392
- let path = this. read_path_from_c_str ( this. read_scalar ( path_op) ?. check_init ( ) ?) ?;
392
+ return Ok ( -1 ) ;
393
+ }
393
394
394
- match env:: set_current_dir ( path) {
395
- Ok ( ( ) ) => Ok ( 0 ) ,
396
- Err ( e) => {
397
- this. set_last_error_from_io_error ( e) ?;
398
- Ok ( -1 )
399
- }
395
+ let path = this. read_path_from_c_str ( this. read_scalar ( path_op) ?. check_init ( ) ?) ?;
396
+
397
+ match env:: set_current_dir ( path) {
398
+ Ok ( ( ) ) => Ok ( 0 ) ,
399
+ Err ( e) => {
400
+ this. set_last_error_from_io_error ( e) ?;
401
+ Ok ( -1 )
400
402
}
401
403
}
402
404
}
@@ -416,16 +418,16 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
416
418
let err = Error :: new ( ErrorKind :: NotFound , "rejected due to isolation" ) ;
417
419
this. set_last_error_from_io_error ( err) ?;
418
420
419
- Ok ( 0 )
420
- } else {
421
- let path = this. read_path_from_wide_str ( this. read_scalar ( path_op) ?. check_init ( ) ?) ?;
421
+ return Ok ( 0 ) ;
422
+ }
422
423
423
- match env:: set_current_dir ( path) {
424
- Ok ( ( ) ) => Ok ( 1 ) ,
425
- Err ( e) => {
426
- this. set_last_error_from_io_error ( e) ?;
427
- Ok ( 0 )
428
- }
424
+ let path = this. read_path_from_wide_str ( this. read_scalar ( path_op) ?. check_init ( ) ?) ?;
425
+
426
+ match env:: set_current_dir ( path) {
427
+ Ok ( ( ) ) => Ok ( 1 ) ,
428
+ Err ( e) => {
429
+ this. set_last_error_from_io_error ( e) ?;
430
+ Ok ( 0 )
429
431
}
430
432
}
431
433
}
0 commit comments