@@ -52,34 +52,28 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
52
52
fn getenv (
53
53
& mut self ,
54
54
name_op : OpTy < ' tcx , Tag > ,
55
- dest : PlaceTy < ' tcx , Tag >
56
- ) -> InterpResult < ' tcx > {
55
+ ) -> InterpResult < ' tcx , Scalar < Tag > > {
57
56
let this = self . eval_context_mut ( ) ;
58
57
59
- let result = {
60
- let name_ptr = this. read_scalar ( name_op) ?. not_undef ( ) ?;
61
- let name = this. memory ( ) . read_c_str ( name_ptr) ?;
62
- match this. machine . env_vars . map . get ( name) {
63
- Some ( & var) => Scalar :: Ptr ( var) ,
64
- None => Scalar :: ptr_null ( & * this. tcx ) ,
65
- }
66
- } ;
67
- this. write_scalar ( result, dest) ?;
68
- Ok ( ( ) )
58
+ let name_ptr = this. read_scalar ( name_op) ?. not_undef ( ) ?;
59
+ let name = this. memory ( ) . read_c_str ( name_ptr) ?;
60
+ Ok ( match this. machine . env_vars . map . get ( name) {
61
+ Some ( & var) => Scalar :: Ptr ( var) ,
62
+ None => Scalar :: ptr_null ( & * this. tcx ) ,
63
+ } )
69
64
}
70
65
71
66
fn setenv (
72
67
& mut self ,
73
68
name_op : OpTy < ' tcx , Tag > ,
74
69
value_op : OpTy < ' tcx , Tag > ,
75
- dest : PlaceTy < ' tcx , Tag >
76
- ) -> InterpResult < ' tcx > {
70
+ ) -> InterpResult < ' tcx , i32 > {
77
71
let this = self . eval_context_mut ( ) ;
78
72
79
- let mut new = None ;
80
73
let name_ptr = this. read_scalar ( name_op) ?. not_undef ( ) ?;
81
74
let value_ptr = this. read_scalar ( value_op) ?. not_undef ( ) ?;
82
75
let value = this. memory ( ) . read_c_str ( value_ptr) ?;
76
+ let mut new = None ;
83
77
if !this. is_null ( name_ptr) ? {
84
78
let name = this. memory ( ) . read_c_str ( name_ptr) ?;
85
79
if !name. is_empty ( ) && !name. contains ( & b'=' ) {
@@ -91,22 +85,20 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
91
85
if let Some ( var) = this. machine . env_vars . map . insert ( name. to_owned ( ) , value_copy) {
92
86
this. memory_mut ( ) . deallocate ( var, None , MiriMemoryKind :: Env . into ( ) ) ?;
93
87
}
94
- this . write_null ( dest ) ? ;
88
+ Ok ( 0 )
95
89
} else {
96
- this . write_scalar ( Scalar :: from_int ( - 1 , dest . layout . size ) , dest ) ? ;
90
+ Ok ( - 1 )
97
91
}
98
- Ok ( ( ) )
99
92
}
100
93
101
94
fn unsetenv (
102
95
& mut self ,
103
96
name_op : OpTy < ' tcx , Tag > ,
104
- dest : PlaceTy < ' tcx , Tag >
105
- ) -> InterpResult < ' tcx > {
97
+ ) -> InterpResult < ' tcx , i32 > {
106
98
let this = self . eval_context_mut ( ) ;
107
99
108
- let mut success = None ;
109
100
let name_ptr = this. read_scalar ( name_op) ?. not_undef ( ) ?;
101
+ let mut success = None ;
110
102
if !this. is_null ( name_ptr) ? {
111
103
let name = this. memory ( ) . read_c_str ( name_ptr) ?. to_owned ( ) ;
112
104
if !name. is_empty ( ) && !name. contains ( & b'=' ) {
@@ -117,10 +109,9 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
117
109
if let Some ( var) = old {
118
110
this. memory_mut ( ) . deallocate ( var, None , MiriMemoryKind :: Env . into ( ) ) ?;
119
111
}
120
- this . write_null ( dest ) ? ;
112
+ Ok ( 0 )
121
113
} else {
122
- this . write_scalar ( Scalar :: from_int ( - 1 , dest . layout . size ) , dest ) ? ;
114
+ Ok ( - 1 )
123
115
}
124
- Ok ( ( ) )
125
116
}
126
117
}
0 commit comments