diff options
| author | peter <peter@pmikkelsen.com> | 2026-08-30 14:25:56 +0000 |
|---|---|---|
| committer | peter <peter@pmikkelsen.com> | 2026-08-30 14:25:56 +0000 |
| commit | 2261ffa04ddf30a7c8eae6e64129b293fc8bffd9 (patch) | |
| tree | 1c81cb85450ceb66e7e4f56d46ec374ccfaca0e5 | |
| parent | 8521b6a69deab8cdabe1c87b09ecdc93d75af98e (diff) | |
Let the memory allocation code set the last_error to APLWC_OUT_OF_MEMORY, instead of the callers
FossilOrigin-Name: 46c74e207a84e861636dbfebc4ba8bb9e7b17401dfd2c4fb9bdeae0fa98fd530
| -rw-r--r-- | src/lib/eval.c | 9 | ||||
| -rw-r--r-- | src/lib/main.c | 6 | ||||
| -rw-r--r-- | src/lib/memory.c | 4 | ||||
| -rw-r--r-- | src/lib/module.c | 4 | ||||
| -rw-r--r-- | src/lib/string.c | 3 | ||||
| -rw-r--r-- | src/lib/syntax.c | 4 |
6 files changed, 12 insertions, 18 deletions
diff --git a/src/lib/eval.c b/src/lib/eval.c index 649914d..21fb223 100644 --- a/src/lib/eval.c +++ b/src/lib/eval.c @@ -10,10 +10,9 @@ eval_line(struct aplwc_line *line) assert(aplwc->last_error == APLWC_OK); value = memory_alloc_aplwc_value(aplwc); - if(value == NULL) - aplwc->last_error = APLWC_OUT_OF_MEMORY; - value->aplwc = aplwc; - value->tag = VALUE_NULL; - + if(value != NULL){ + value->aplwc = aplwc; + value->tag = VALUE_NULL; + } return value; } diff --git a/src/lib/main.c b/src/lib/main.c index fa7e547..2bd374b 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -10,7 +10,7 @@ aplwc_new(struct aplwc **p, uint8_t *data, size_t size) *p = memory_alloc_aplwc(&tmp_aplwc); if(*p == NULL) - return APLWC_OUT_OF_MEMORY; + return tmp_aplwc.last_error; memcpy(*p, &tmp_aplwc, sizeof(tmp_aplwc)); return aplwc_load_module(*p, "Boot", (const char *)boot_src, boot_src_len); @@ -84,10 +84,8 @@ aplwc_read(struct aplwc *aplwc, const char *line) return NULL; ret = memory_alloc_aplwc_line(aplwc); - if(ret == NULL){ - aplwc->last_error = APLWC_OUT_OF_MEMORY; + if(ret == NULL) return NULL; - } ret->aplwc = aplwc; ret->text = text; diff --git a/src/lib/memory.c b/src/lib/memory.c index 24d3d68..ca4babf 100644 --- a/src/lib/memory.c +++ b/src/lib/memory.c @@ -30,8 +30,10 @@ alloc(struct aplwc *aplwc, size_t size, size_t align) assert((((uintptr_t)p) % align) == 0); aplwc->offset += alloc_size; memset(p, 0, size); - }else + }else{ p = NULL; + aplwc->last_error = APLWC_OUT_OF_MEMORY; + } return p; } diff --git a/src/lib/module.c b/src/lib/module.c index 4c96f64..db5dc78 100644 --- a/src/lib/module.c +++ b/src/lib/module.c @@ -59,10 +59,8 @@ load_module(struct aplwc *aplwc, struct string *name, struct token_list *tokens) struct aplwc_module *module; module = memory_alloc_aplwc_module(aplwc); - if(module == NULL){ - aplwc->last_error = APLWC_OUT_OF_MEMORY; + if(module == NULL) return aplwc->last_error; - } module->aplwc = aplwc; module->name = name; module->tokens = tokens; diff --git a/src/lib/string.c b/src/lib/string.c index d10fb1f..cc6c6cb 100644 --- a/src/lib/string.c +++ b/src/lib/string.c @@ -74,8 +74,7 @@ invalid: string->bytes = bytecount; string->chars = charcount; memcpy(string->utf8, utf8, bytecount); - }else - aplwc->last_error = APLWC_OUT_OF_MEMORY; + } return string; } diff --git a/src/lib/syntax.c b/src/lib/syntax.c index 9888bef..16d0363 100644 --- a/src/lib/syntax.c +++ b/src/lib/syntax.c @@ -247,10 +247,8 @@ scan_string(struct aplwc *aplwc, struct string *text, int oneline) } tokens = memory_alloc_token_list(aplwc, n); - if(tokens == NULL){ - aplwc->last_error = APLWC_OUT_OF_MEMORY; + if(tokens == NULL) return NULL; - } tokens->text = text; tokens->length = n; scan(text, tokens); |