This commit is contained in:
Andre Wagner
2026-05-12 10:37:41 -05:00
parent 968bf9dd8d
commit 501f99f28f
2 changed files with 13 additions and 3 deletions

View File

@@ -30,7 +30,7 @@ endif
# debug and release flags # debug and release flags
DEBUG_CFLAGS=-Og -ggdb3 ${WARNINGS} -fno-omit-frame-pointer -fsanitize=address -fsanitize=undefined \ DEBUG_CFLAGS=-O0 -Og -ggdb3 ${WARNINGS} -fno-omit-frame-pointer -fsanitize=address -fsanitize=undefined \
-fno-sanitize-recover=all -fstack-protector-strong -fstack-clash-protection -fno-common ${ADD_DBG_FLAGS} \ -fno-sanitize-recover=all -fstack-protector-strong -fstack-clash-protection -fno-common ${ADD_DBG_FLAGS} \
-DCHECK_TYCHE_BUGS=1 -DCHECK_TYCHE_BUGS=1
DEBUG_LDFLAGS=-fsanitize=address -fsanitize=undefined DEBUG_LDFLAGS=-fsanitize=address -fsanitize=undefined

View File

@@ -77,7 +77,7 @@ static size_t stack_len(Stack* s)
static TYC_RESULT stack_at(Stack* s, int32_t key, VALUE* v) static TYC_RESULT stack_at(Stack* s, int32_t key, VALUE* v)
{ {
if (key >= 0) { if (key >= 0) {
if (key >= s->stack_n) if (stack_top_fp(s) + key >= s->stack_n)
return T_ERR_STACK_ACCESS_OUT_OF_RANGE; return T_ERR_STACK_ACCESS_OUT_OF_RANGE;
*v = s->stack[stack_top_fp(s) + key]; *v = s->stack[stack_top_fp(s) + key];
} else { } else {
@@ -91,7 +91,17 @@ static TYC_RESULT stack_at(Stack* s, int32_t key, VALUE* v)
static TYC_RESULT stack_set(Stack* s, int32_t key, VALUE v) static TYC_RESULT stack_set(Stack* s, int32_t key, VALUE v)
{ {
abort(); // TODO if (key >= 0) {
if (stack_top_fp(s) + key >= s->stack_n)
return T_ERR_STACK_ACCESS_OUT_OF_RANGE;
s->stack[stack_top_fp(s) + key] = v;
} else {
if ((int) stack_top_fp(s) + (int) s->stack_n + key < 0)
return T_ERR_STACK_ACCESS_OUT_OF_RANGE;
s->stack[s->stack_n + key] = v;
}
return T_OK;
} }
static TYC_RESULT stack_push_fp(Stack* s) static TYC_RESULT stack_push_fp(Stack* s)