summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--read.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/read.c b/read.c
index e276bc6..24ed031 100644
--- a/read.c
+++ b/read.c
@@ -698,6 +698,12 @@ do_define (name, namelen, origin, lineno, infile, filename)
register unsigned int idx = 0;
register char *p;
+ /* Expand the variable name. */
+ char *var = alloca (namelen + 1);
+ bcopy (name, var, namelen);
+ var[namelen] = '\0';
+ var = variable_expand (var);
+
initbuffer (&lb);
while (!feof (infile))
{
@@ -718,7 +724,7 @@ do_define (name, namelen, origin, lineno, infile, filename)
definition[0] = '\0';
else
definition[idx - 1] = '\0';
- (void) define_variable (name, namelen, definition, origin, 1);
+ (void) define_variable (var, strlen (var), definition, origin, 1);
free (definition);
freebuffer (&lb);
return lineno;