diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 2000-01-17 09:34:45 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 2000-01-17 09:34:45 +0000 |
commit | 3250a1932b5984b8801b62f81ab8413dd347bc5f (patch) | |
tree | 4c511bc8b1206947a3c296070fd93be3162d65b1 /Src/Zle/complete.c | |
parent | 5916a06121fe5d21f4ba73305e10f6686c77e28e (diff) | |
download | zsh-3250a1932b5984b8801b62f81ab8413dd347bc5f.tar.gz zsh-3250a1932b5984b8801b62f81ab8413dd347bc5f.tar.xz zsh-3250a1932b5984b8801b62f81ab8413dd347bc5f.zip |
zsh-workers/9329
Diffstat (limited to 'Src/Zle/complete.c')
-rw-r--r-- | Src/Zle/complete.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c index fa1476a90..d4c9f76c8 100644 --- a/Src/Zle/complete.c +++ b/Src/Zle/complete.c @@ -1133,14 +1133,21 @@ static void compunsetfn(Param pm, int exp) { if (exp) { - if (PM_TYPE(pm->flags) == PM_SCALAR) { - zsfree(*((char **) pm->u.data)); - *((char **) pm->u.data) = ztrdup(""); - } else if (PM_TYPE(pm->flags) == PM_ARRAY) { - freearray(*((char ***) pm->u.data)); - *((char ***) pm->u.data) = zcalloc(sizeof(char *)); + if (pm->u.data) { + if (PM_TYPE(pm->flags) == PM_SCALAR) { + zsfree(*((char **) pm->u.data)); + *((char **) pm->u.data) = ztrdup(""); + } else if (PM_TYPE(pm->flags) == PM_ARRAY) { + freearray(*((char ***) pm->u.data)); + *((char ***) pm->u.data) = zcalloc(sizeof(char *)); + } else if (PM_TYPE(pm->flags) == PM_HASHED) { + deleteparamtable(pm->u.hash); + pm->u.hash = NULL; + } } - pm->flags |= PM_UNSET; + } else if (PM_TYPE(pm->flags) == PM_HASHED) { + deletehashtable(pm->u.hash); + pm->u.hash = NULL; } } |