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_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} \
-DCHECK_TYCHE_BUGS=1
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)
{
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;
*v = s->stack[stack_top_fp(s) + key];
} 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)
{
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)