diff options
Diffstat (limited to 'src/lib/module.c')
| -rw-r--r-- | src/lib/module.c | 17 |
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; } |