1
0
mirror of https://github.com/janet-lang/janet synced 2024-11-28 19:19:53 +00:00

Add a few asserts to quiet some of the -fanalyze calls in gcc 13.

This commit is contained in:
Calvin Rose 2023-06-01 10:52:34 -05:00
parent 5de889419f
commit d0aa7ef590
8 changed files with 16 additions and 10 deletions

View File

@ -314,6 +314,7 @@ static Janet doframe(JanetStackFrame *frame) {
if (frame->func && frame->pc) { if (frame->func && frame->pc) {
Janet *stack = (Janet *)frame + JANET_FRAME_SIZE; Janet *stack = (Janet *)frame + JANET_FRAME_SIZE;
JanetArray *slots; JanetArray *slots;
janet_assert(def != NULL, "def != NULL");
off = (int32_t)(frame->pc - def->bytecode); off = (int32_t)(frame->pc - def->bytecode);
janet_table_put(t, janet_ckeywordv("pc"), janet_wrap_integer(off)); janet_table_put(t, janet_ckeywordv("pc"), janet_wrap_integer(off));
if (def->sourcemap) { if (def->sourcemap) {

View File

@ -81,6 +81,7 @@ JanetFiber *janet_fiber_reset(JanetFiber *fiber, JanetFunction *callee, int32_t
} }
fiber->stacktop = newstacktop; fiber->stacktop = newstacktop;
} }
/* Don't panic on failure since we use this to implement janet_pcall */
if (janet_fiber_funcframe(fiber, callee)) return NULL; if (janet_fiber_funcframe(fiber, callee)) return NULL;
janet_fiber_frame(fiber)->flags |= JANET_STACKFRAME_ENTRANCE; janet_fiber_frame(fiber)->flags |= JANET_STACKFRAME_ENTRANCE;
#ifdef JANET_EV #ifdef JANET_EV
@ -92,7 +93,9 @@ JanetFiber *janet_fiber_reset(JanetFiber *fiber, JanetFunction *callee, int32_t
/* Create a new fiber with argn values on the stack. */ /* Create a new fiber with argn values on the stack. */
JanetFiber *janet_fiber(JanetFunction *callee, int32_t capacity, int32_t argc, const Janet *argv) { JanetFiber *janet_fiber(JanetFunction *callee, int32_t capacity, int32_t argc, const Janet *argv) {
return janet_fiber_reset(fiber_alloc(capacity), callee, argc, argv); JanetFiber *result = janet_fiber_reset(fiber_alloc(capacity), callee, argc, argv);
if (NULL == result) janet_panic("cannot create fiber");
return result;
} }
#ifdef JANET_DEBUG #ifdef JANET_DEBUG

View File

@ -775,7 +775,7 @@ static const char *get_fmt_mapping(char c) {
if (format_mappings[i].c == c) if (format_mappings[i].c == c)
return format_mappings[i].mapping; return format_mappings[i].mapping;
} }
return NULL; janet_assert(0, "bad format mapping");
} }
static const char *scanformat( static const char *scanformat(

View File

@ -1019,6 +1019,7 @@ static JanetSlot janetc_fn(JanetFopts opts, int32_t argn, const Janet *argv) {
for (i = 0; i < paramcount; i++) { for (i = 0; i < paramcount; i++) {
Janet param = params[i]; Janet param = params[i];
if (!janet_checktype(param, JANET_SYMBOL)) { if (!janet_checktype(param, JANET_SYMBOL)) {
janet_assert(janet_v_count(destructed_params) > j, "out of bounds");
JanetSlot reg = destructed_params[j++]; JanetSlot reg = destructed_params[j++];
destructure(c, param, reg, defleaf, NULL); destructure(c, param, reg, defleaf, NULL);
janetc_freeslot(c, reg); janetc_freeslot(c, reg);

View File

@ -108,6 +108,7 @@ static const uint8_t **janet_symcache_findmem(
} }
notfound: notfound:
*success = 0; *success = 0;
janet_assert(firstEmpty != NULL, "symcache failed to get memory");
return firstEmpty; return firstEmpty;
} }

View File

@ -499,7 +499,7 @@ typedef struct {
static void namebuf_init(NameBuf *namebuf, const char *prefix) { static void namebuf_init(NameBuf *namebuf, const char *prefix) {
size_t plen = strlen(prefix); size_t plen = strlen(prefix);
namebuf->plen = plen; namebuf->plen = plen;
namebuf->buf = janet_malloc(namebuf->plen + 256); namebuf->buf = janet_smalloc(namebuf->plen + 256);
if (NULL == namebuf->buf) { if (NULL == namebuf->buf) {
JANET_OUT_OF_MEMORY; JANET_OUT_OF_MEMORY;
} }
@ -508,12 +508,12 @@ static void namebuf_init(NameBuf *namebuf, const char *prefix) {
} }
static void namebuf_deinit(NameBuf *namebuf) { static void namebuf_deinit(NameBuf *namebuf) {
janet_free(namebuf->buf); janet_sfree(namebuf->buf);
} }
static char *namebuf_name(NameBuf *namebuf, const char *suffix) { static char *namebuf_name(NameBuf *namebuf, const char *suffix) {
size_t slen = strlen(suffix); size_t slen = strlen(suffix);
namebuf->buf = janet_realloc(namebuf->buf, namebuf->plen + 2 + slen); namebuf->buf = janet_srealloc(namebuf->buf, namebuf->plen + 2 + slen);
if (NULL == namebuf->buf) { if (NULL == namebuf->buf) {
JANET_OUT_OF_MEMORY; JANET_OUT_OF_MEMORY;
} }

View File

@ -40,7 +40,7 @@ void *janet_v_grow(void *v, int32_t increment, int32_t itemsize) {
/* Convert a buffer to normal allocated memory (forget capacity) */ /* Convert a buffer to normal allocated memory (forget capacity) */
void *janet_v_flattenmem(void *v, int32_t itemsize) { void *janet_v_flattenmem(void *v, int32_t itemsize) {
int32_t *p; char *p;
if (NULL == v) return NULL; if (NULL == v) return NULL;
size_t size = (size_t) itemsize * janet_v__cnt(v); size_t size = (size_t) itemsize * janet_v__cnt(v);
p = janet_malloc(size); p = janet_malloc(size);

View File

@ -1513,14 +1513,14 @@ JanetSignal janet_pcall(
JanetFiber *fiber; JanetFiber *fiber;
if (f && *f) { if (f && *f) {
fiber = janet_fiber_reset(*f, fun, argc, argv); fiber = janet_fiber_reset(*f, fun, argc, argv);
if (NULL == fiber) {
*out = janet_cstringv("arity mismatch");
return JANET_SIGNAL_ERROR;
}
} else { } else {
fiber = janet_fiber(fun, 64, argc, argv); fiber = janet_fiber(fun, 64, argc, argv);
} }
if (f) *f = fiber; if (f) *f = fiber;
if (!fiber) {
*out = janet_cstringv("arity mismatch");
return JANET_SIGNAL_ERROR;
}
return janet_continue(fiber, janet_wrap_nil(), out); return janet_continue(fiber, janet_wrap_nil(), out);
} }