diff --git a/src/core/stuff.c b/src/core/stuff.c index aa56d331..736867a2 100644 --- a/src/core/stuff.c +++ b/src/core/stuff.c @@ -12,6 +12,9 @@ NORETURN NOINLINE void err(char* s) { } B bi_emptyHVec, bi_emptyIVec, bi_emptyCVec, bi_emptySVec; +NOINLINE B emptyCVecR() { + return emptyCVec(); +} NOINLINE TStack* ts_e(TStack* o, u32 elsz, u64 am) { u64 size = o->size; u64 alsz = mm_round(fsizeof(TStack, data, u8, (size+am)*elsz)); diff --git a/src/h.h b/src/h.h index ad190855..31f55c3c 100644 --- a/src/h.h +++ b/src/h.h @@ -235,6 +235,7 @@ extern B bi_emptyHVec, bi_emptyIVec, bi_emptyCVec, bi_emptySVec; #define emptyIVec() ({ B t = bi_emptyIVec; ptr_inc(v(t)); t; }) #define emptyCVec() ({ B t = bi_emptyCVec; ptr_inc(v(t)); t; }) #define emptySVec() ({ B t = bi_emptySVec; ptr_inc(v(t)); t; }) +NOINLINE B emptyCVecR(); static void dec(B x); static B inc(B x); static void ptr_dec(void* x); @@ -260,7 +261,7 @@ B bqn_repr(B x); // consumes NOINLINE NORETURN void thr(B b); NOINLINE NORETURN void thrM(char* s); -#define thrF(...) thr(append_fmt(emptyCVec(), __VA_ARGS__)) +#define thrF(...) thr(append_fmt(emptyCVecR(), __VA_ARGS__)) NOINLINE NORETURN void thrOOM(); jmp_buf* prepareCatch(); #if CATCH_ERRORS