During variable expansion, the internal representation of the expression
might be relocated. Handle this case. PR: 7059
This commit is contained in:
parent
87c737bc83
commit
c4e5a8a8b9
@ -39,7 +39,7 @@
|
||||
static char sccsid[] = "@(#)expand.c 8.5 (Berkeley) 5/15/95";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id: expand.c,v 1.24 1998/09/13 19:24:57 tegge Exp $";
|
||||
"$Id: expand.c,v 1.25 1999/04/09 15:23:48 tegge Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
@ -646,7 +646,7 @@ evalvar(p, flag)
|
||||
int varflags;
|
||||
char *var;
|
||||
char *val;
|
||||
char *pat;
|
||||
int patloc;
|
||||
int c;
|
||||
int set;
|
||||
int special;
|
||||
@ -744,10 +744,10 @@ evalvar(p, flag)
|
||||
* right after it
|
||||
*/
|
||||
STPUTC('\0', expdest);
|
||||
pat = expdest;
|
||||
if (subevalvar(p, NULL, expdest - stackblock(), subtype,
|
||||
patloc = expdest - stackblock();
|
||||
if (subevalvar(p, NULL, patloc, subtype,
|
||||
startloc, varflags) == 0) {
|
||||
int amount = (expdest - pat) + 1;
|
||||
int amount = (expdest - stackblock() - patloc) + 1;
|
||||
STADJUST(-amount, expdest);
|
||||
}
|
||||
/* Remove any recorded regions beyond start of variable */
|
||||
|
Loading…
Reference in New Issue
Block a user