summaryrefslogtreecommitdiff
path: root/src/lib/module.c
diff options
context:
space:
mode:
authorpeter <peter@pmikkelsen.com>2026-08-30 20:52:43 +0000
committerpeter <peter@pmikkelsen.com>2026-08-30 20:52:43 +0000
commit729964bea692f9683860978b89848784a7fc2f46 (patch)
treeba5b37a61206142fce18214c7af341ac837a7923 /src/lib/module.c
parent04827577ea502a9f0edc69e00e008751c8119cbc (diff)
Still a lot to be done, but I'm going to bed.
Two remaining big issues: * aplwc (the parameter passed "everywhere") - should it move or not? * values returned from the public API should not move. FossilOrigin-Name: 31ab3154b8f3d5ac167218496e9e204324bf0ac9d36b7bada8fe2a6c8f93d51c
Diffstat (limited to 'src/lib/module.c')
-rw-r--r--src/lib/module.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/lib/module.c b/src/lib/module.c
index f559f00..3bca396 100644
--- a/src/lib/module.c
+++ b/src/lib/module.c
@@ -58,9 +58,17 @@ load_module(struct aplwc *aplwc, struct string *name, struct token_list *tokens)
enum aplwc_rc rc;
struct aplwc_module *module;
+ MEMPTRS(aplwc, 2);
+
+ MEMPTR(0, name);
+ MEMPTR(1, tokens);
+
module = memory_alloc_aplwc_module(aplwc);
- if(module == NULL)
- return aplwc->last_error;
+ if(module == NULL){
+ rc = aplwc_last_error(aplwc);
+ goto end;
+ }
+
module->aplwc = aplwc;
module->name = name;
module->tokens = tokens;
@@ -70,8 +78,11 @@ load_module(struct aplwc *aplwc, struct string *name, struct token_list *tokens)
if(rc == APLWC_OK){
module->link = aplwc->modules;
aplwc->modules = module;
- }
+ }else
+ aplwc->last_error = rc;
+end:
+ MEMPTRS_EXIT(aplwc);
return rc;
}