summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/eval.c b/src/eval.c
index 8b41f38..f140ed0 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -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);