diff options
author | Jun T <takimoto-j@kba.biglobe.ne.jp> | 2016-01-25 08:27:48 -0800 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2016-01-25 08:28:30 -0800 |
commit | 1d98f77a9be240662d84c7c2014019571f7eda1b (patch) | |
tree | b210d1c6ce62cbe04b822166016afb3d788dab24 /Src/Modules/param_private.c | |
parent | 7c59c953f28026559325473ba53be0dd3a661109 (diff) | |
download | zsh-1d98f77a9be240662d84c7c2014019571f7eda1b.tar.gz zsh-1d98f77a9be240662d84c7c2014019571f7eda1b.tar.xz zsh-1d98f77a9be240662d84c7c2014019571f7eda1b.zip |
Jun T.: 37759: save more function pointers from realparamtab when hacking in their replacements
Restoring from the original external symbols fails for some dynamic link schemes (e.g. 64bit Cygwin).
Diffstat (limited to 'Src/Modules/param_private.c')
-rw-r--r-- | Src/Modules/param_private.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/Src/Modules/param_private.c b/Src/Modules/param_private.c index e13813c3d..2f51cb099 100644 --- a/Src/Modules/param_private.c +++ b/Src/Modules/param_private.c @@ -490,7 +490,7 @@ wrap_private(Eprog prog, FuncWrap w, char *name) return 1; } -static HashNode (*getparamnode) _((HashTable, const char *)); +static GetNodeFunc getparamnode; /**/ static HashNode @@ -567,6 +567,8 @@ static struct features module_features = { }; static struct builtin save_local; +static GetNodeFunc save_getnode2; +static ScanFunc save_printnode; static struct reswd reswd_private = {{NULL, "private", 0}, TYPESET}; /**/ @@ -577,6 +579,8 @@ setup_(UNUSED(Module m)) /* Horrible, horrible hack */ getparamnode = realparamtab->getnode; + save_getnode2 = realparamtab->getnode2; + save_printnode = realparamtab->printnode; realparamtab->getnode = getprivatenode; realparamtab->getnode2 = getprivatenode2; realparamtab->printnode = printprivatenode; @@ -624,8 +628,8 @@ cleanup_(Module m) removehashnode(reswdtab, "private"); realparamtab->getnode = getparamnode; - realparamtab->getnode2 = gethashnode2; - realparamtab->printnode = printparamnode; + realparamtab->getnode2 = save_getnode2; + realparamtab->printnode = save_printnode; deletewrapper(m, wrapper); return setfeatureenables(m, &module_features, NULL); |