about summary refs log tree commit diff
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
parent43ac170305e270dbc7759464a995071a161d3692 (diff)
downloadzsh-77166e259ee91fde498347de7c3c807d7bff6f1f.tar.gz
zsh-77166e259ee91fde498347de7c3c807d7bff6f1f.tar.xz
zsh-77166e259ee91fde498347de7c3c807d7bff6f1f.zip
20695: Fix Cygwin problem with initialising from pointer to imported variable zsh-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;
 }