diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -62,8 +62,8 @@ void exec_all(sym_t** symbols, int count, hashtable_t* symbolScope) { } sym_t* eval_with_args(sym_t* symbol, sym_t** args, int argCount, hashtable_t* symbolScope) { sym_t** addedArgs = malloc(100 * sizeof(sym_t*)); - for (int i = 0; i < argCount && i < 100; i++) { - char* keyName = malloc(6 * sizeof(char)); + for (unsigned int i = 0; i < (unsigned int)argCount && i < 100; i++) { + char keyName[6]; strcpy(keyName, "arg"); char index[3]; snprintf(index, 3, "%d", i); @@ -71,7 +71,6 @@ sym_t* eval_with_args(sym_t* symbol, sym_t** args, int argCount, hashtable_t* sy sym_t* argV = eval(args[i], symbolScope->parent); addedArgs[i] = argV; pair_t argPair = init_pair(keyName, argV); - free(keyName); hashtable_add_pair(symbolScope, argPair); } sym_t* v = eval(symbol, symbolScope); @@ -82,7 +81,7 @@ sym_t* eval_with_args(sym_t* symbol, sym_t** args, int argCount, hashtable_t* sy free(addedArgs); return v; } -/* internal functions? +/* internal functions this function has side-effects */ sym_t* try_eval_internal(sym_t* symbol, hashtable_t* symbolScope) { unsigned int hash = get_hash((char*)symbol->name); |
