From 4f9c20f5701372f72ec016762737a74f793bb127 Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Fri, 3 Mar 2023 12:12:03 -0800 Subject: fixed uninitialized variable use in eq() --- src/eval.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/eval.c') diff --git a/src/eval.c b/src/eval.c index 081f098..a99ad4d 100644 --- a/src/eval.c +++ b/src/eval.c @@ -131,7 +131,7 @@ sym_t* try_eval_internal(sym_t* symbol, hashtable_t* symbolScope) { litType_t firstType = NO_TYPE; int firstInt = 0; float firstFloat = 0; - char* firstString; + char* firstString = NULL; for (int i = 0; i < symbol->argCount; i++) { sym_t* v = eval(symbol->args[i], symbolScope); /* initialize */ @@ -165,17 +165,23 @@ sym_t* try_eval_internal(sym_t* symbol, hashtable_t* symbolScope) { } } else if (v->litType == STRING) { - char* ss = symtos(v); - if (strcmp(ss, firstString) != 0) { + if (firstType == STRING) { + char* ss = symtos(v); + if (strcmp(ss, firstString) != 0) { + destroy_sym(v); + free(firstString); + return init_sym_int(0); + } + } + else { destroy_sym(v); - free(firstString); return init_sym_int(0); } destroy_sym(v); } } } - if (firstType == STRING) { + if (firstString != NULL) { free(firstString); } return init_sym_int(1); -- cgit v1.3.1