summaryrefslogtreecommitdiffstats
path: root/Src/module.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2005-01-12 12:18:58 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2005-01-12 12:18:58 +0000
commit77166e259ee91fde498347de7c3c807d7bff6f1f (patch)
tree6382fbe91a8f5eb8b96a3095ed9b602957d826ce /Src/module.c
parentFix .distfiles and .cvsignore (diff)
downloadzsh-77166e259ee91fde498347de7c3c807d7bff6f1f.tar
zsh-77166e259ee91fde498347de7c3c807d7bff6f1f.tar.gz
zsh-77166e259ee91fde498347de7c3c807d7bff6f1f.tar.bz2
zsh-77166e259ee91fde498347de7c3c807d7bff6f1f.tar.lz
zsh-77166e259ee91fde498347de7c3c807d7bff6f1f.tar.xz
zsh-77166e259ee91fde498347de7c3c807d7bff6f1f.tar.zst
zsh-77166e259ee91fde498347de7c3c807d7bff6f1f.zip
20695: Fix Cygwin problem with initialising from pointer to imported variablezsh-4.2.2
Diffstat (limited to 'Src/module.c')
-rw-r--r--Src/module.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/Src/module.c b/Src/module.c
index 4510d3037..c50e032b6 100644
--- a/Src/module.c
+++ b/Src/module.c
@@ -1894,7 +1894,31 @@ addparamdef(Paramdef d)
pm->level = 0;
pm->u.data = d->var;
- pm->gsu.i = (GsuInteger) d->gsu;
+ if (d->gsu)
+ pm->gsu.i = (GsuInteger) d->gsu;
+ else {
+ /*
+ * If no get/set/unset class, use the appropriate
+ * variable type.
+ */
+ switch (PM_TYPE(pm->flags)) {
+ case PM_SCALAR:
+ pm->gsu.s = &varscalar_gsu;
+ break;
+
+ case PM_INTEGER:
+ pm->gsu.i = &varinteger_gsu;
+ break;
+
+ case PM_ARRAY:
+ pm->gsu.a = &vararray_gsu;
+ break;
+
+ default:
+ unsetparam_pm(pm, 0, 1);
+ return 1;
+ }
+ }
return 0;
}