diff options
Diffstat (limited to 'src/lib/module.c')
| -rw-r--r-- | src/lib/module.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/lib/module.c b/src/lib/module.c index 9a202f9..2524eca 100644 --- a/src/lib/module.c +++ b/src/lib/module.c @@ -58,12 +58,17 @@ load_module(struct aplwc *aplwc, struct string *name, struct token_list *tokens) enum aplwc_rc rc; struct aplwc_module *module; - module = memory_alloc_aplwc_module(&aplwc->memory); + MEMPTRS(aplwc, 2); + + MEMPTR(0, name); + MEMPTR(1, tokens); + + module = memory_alloc_aplwc_module(aplwc); if(module == NULL){ - aplwc->last_error = APLWC_OUT_OF_MEMORY; - return aplwc->last_error; + rc = aplwc_last_error(aplwc); + goto end; } - module->aplwc = aplwc; + module->name = name; module->tokens = tokens; module->link = NULL; @@ -72,10 +77,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{ - memory_free_aplwc_module(&aplwc->memory, module); - } + }else + aplwc->last_error = rc; +end: + MEMPTRS_EXIT(aplwc); return rc; } |