diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/module.c | 21 |
2 files changed, 16 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index bd1c5ae67..262d6b387 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2000-08-15 Bart Schaefer <schaefer@zsh.org> + + * 12652: Src/module.c: Fix variable scoping problem that caused + crash in `zmodload -u'. + 2000-08-15 Sven Wischnowsky <wischnow@zsh.org> * 12640: Completion/Builtins/_pids, Completion/Builtins/_zstyle, diff --git a/Src/module.c b/Src/module.c index bac8f5c42..13b747f05 100644 --- a/Src/module.c +++ b/Src/module.c @@ -1142,23 +1142,24 @@ bin_zmodload_dep(char *nam, char **args, char *ops) { LinkNode node; Module m; - if(ops['u']) { + if (ops['u']) { /* remove dependencies, which can't pertain to aliases */ const char *tnam = *args++; node = find_module(tnam, 1, &tnam); if (!node) return 0; m = (Module) getdata(node); - if(*args && m->deps) { + if (*args && m->deps) { do { - for(node = firstnode(m->deps); node; incnode(node)) - if(!strcmp(*args, getdata(node))) { - zsfree(getdata(node)); - remnode(m->deps, node); + LinkNode dnode; + for (dnode = firstnode(m->deps); dnode; incnode(dnode)) + if (!strcmp(*args, getdata(dnode))) { + zsfree(getdata(dnode)); + remnode(m->deps, dnode); break; } } while(*++args); - if(empty(m->deps)) { + if (empty(m->deps)) { freelinklist(m->deps, freestr); m->deps = NULL; } @@ -1171,13 +1172,13 @@ bin_zmodload_dep(char *nam, char **args, char *ops) if (!m->deps && !m->u.handle) delete_module(node); return 0; - } else if(!args[0] || !args[1]) { + } else if (!args[0] || !args[1]) { /* list dependencies */ for (node = firstnode(modules); node; incnode(node)) { m = (Module) getdata(node); if (m->deps && (!args[0] || !strcmp(args[0], m->nam))) { LinkNode n; - if(ops['L']) { + if (ops['L']) { printf("zmodload -d "); if(m->nam[0] == '-') fputs("-- ", stdout); @@ -1202,7 +1203,7 @@ bin_zmodload_dep(char *nam, char **args, char *ops) int ret = 0; char *tnam = *args++; - for(; *args; args++) + for (; *args; args++) add_dep(tnam, *args); return ret; } |