diff options
author | Oliver Kiddle <opk@zsh.org> | 2021-11-07 12:55:27 +0100 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2021-11-07 12:55:27 +0100 |
commit | 631576de0f7b4e52487175e3e017e5136424b626 (patch) | |
tree | 2054f3749854a3b8135c45424f1365a77ae3c683 /Src/Modules | |
parent | 271cfc685b17938e67a8212f2df78c32989411d7 (diff) | |
download | zsh-631576de0f7b4e52487175e3e017e5136424b626.tar.gz zsh-631576de0f7b4e52487175e3e017e5136424b626.tar.xz zsh-631576de0f7b4e52487175e3e017e5136424b626.zip |
49544: only tie watch/WATCH if both come from the module
Diffstat (limited to 'Src/Modules')
-rw-r--r-- | Src/Modules/watch.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/Src/Modules/watch.c b/Src/Modules/watch.c index 02f0562fc..5ce604c63 100644 --- a/Src/Modules/watch.c +++ b/Src/Modules/watch.c @@ -640,8 +640,8 @@ static struct builtin bintab[] = { }; static struct paramdef partab[] = { - PARAMDEF("WATCH", PM_TIED|PM_SCALAR|PM_SPECIAL, &watch, &colonarr_gsu), - PARAMDEF("watch", PM_TIED|PM_ARRAY|PM_SPECIAL, &watch, &vararray_gsu), + PARAMDEF("WATCH", PM_SCALAR|PM_SPECIAL, &watch, &colonarr_gsu), + PARAMDEF("watch", PM_ARRAY|PM_SPECIAL, &watch, &vararray_gsu), }; static struct features module_features = { @@ -679,12 +679,16 @@ int boot_(UNUSED(Module m)) { static char const * const default_watchfmt = DEFAULT_WATCHFMT; - Param pm; - if ((pm = (Param) paramtab->getnode(paramtab, "watch"))) - pm->ename = "WATCH"; - if ((pm = (Param) paramtab->getnode(paramtab, "WATCH"))) - pm->ename = "watch"; + Param pma = (Param) paramtab->getnode(paramtab, "watch"); + Param pms = (Param) paramtab->getnode(paramtab, "WATCH"); + if (pma && pms && pma->u.arr == watch && pms->u.arr == watch) { + /* only tie the two parameters if both were added */ + pma->ename = "WATCH"; + pms->ename = "watch"; + pma->node.flags |= PM_TIED; + pms->node.flags |= PM_TIED; + } watch = mkarray(NULL); /* These two parameters are only set to defaults if not set. |