@@ -164,7 +164,7 @@ static void processOnExit(uv_process_t* req, int64_t exit_status, int term_signa
164
164
{
165
165
free (env );
166
166
index += 1 ;
167
- env = data -> options .args [index ];
167
+ env = data -> options .env [index ];
168
168
}
169
169
}
170
170
@@ -200,30 +200,20 @@ void processExec(WrenVM* vm)
200
200
if (wrenGetSlotType (vm , 4 ) == WREN_TYPE_NULL ) {
201
201
// no environment specified
202
202
} else if (wrenGetSlotType (vm , 4 ) == WREN_TYPE_LIST ) {
203
- // fprintf(stderr,"got list\n");
204
203
int envCount = wrenGetListCount (vm , 4 );
205
204
int envSize = sizeof (char * ) * (envCount + 1 );
206
205
207
206
data -> options .env = (char * * )malloc (envSize );
208
207
data -> options .env [envCount ] = NULL ;
209
208
210
- // fprintf(stderr,"envsize %d\n", envCount);
211
209
for (int i = 0 ; i < envCount ; i ++ )
212
210
{
213
-
214
211
wrenGetListElement (vm , 4 , i , 6 );
215
212
if (wrenGetSlotType (vm , 6 ) != WREN_TYPE_STRING ) {
216
- wrenSetSlotString (vm , 0 , "arguments to env are supposed to be string " );
213
+ wrenSetSlotString (vm , 0 , "arguments to env are supposed to be strings " );
217
214
wrenAbortFiber (vm , 0 );
218
215
}
219
216
char * envKeyPlusValue = cli_strdup (wrenGetSlotString (vm , 6 ));
220
- // fprintf(stderr,"key: %s\n", envKeyPlusValue);
221
- // fprintf(stderr,"setting %s\n", envKeyPlusValue);
222
- // char* equalSplit = strchr(envKeyPlusValue, '=');
223
- // *equalSplit = '\0';
224
- // char* key = envKeyPlusValue;
225
- // char* value = equalSplit + 1;
226
-
227
217
data -> options .env [i ] = envKeyPlusValue ;
228
218
}
229
219
}
@@ -239,7 +229,10 @@ void processExec(WrenVM* vm)
239
229
for (int i = 0 ; i < argCount ; i ++ )
240
230
{
241
231
wrenGetListElement (vm , 2 , i , 3 );
242
- //:todo: ensure this is a string, and report an error if not
232
+ if (wrenGetSlotType (vm , 3 ) != WREN_TYPE_STRING ) {
233
+ wrenSetSlotString (vm , 0 , "arguments to args are supposed to be strings" );
234
+ wrenAbortFiber (vm , 0 );
235
+ }
243
236
char * arg = cli_strdup (wrenGetSlotString (vm , 3 ));
244
237
data -> options .args [i + 1 ] = arg ;
245
238
}
0 commit comments