=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/make/varmodifiers.c,v retrieving revision 1.13 retrieving revision 1.14 diff -c -r1.13 -r1.14 *** src/usr.bin/make/varmodifiers.c 2004/04/07 13:11:36 1.13 --- src/usr.bin/make/varmodifiers.c 2005/07/15 20:43:23 1.14 *************** *** 1,5 **** /* $OpenPackages$ */ ! /* $OpenBSD: varmodifiers.c,v 1.13 2004/04/07 13:11:36 espie Exp $ */ /* $NetBSD: var.c,v 1.18 1997/03/18 19:24:46 christos Exp $ */ /* --- 1,5 ---- /* $OpenPackages$ */ ! /* $OpenBSD: varmodifiers.c,v 1.14 2005/07/15 20:43:23 espie Exp $ */ /* $NetBSD: var.c,v 1.18 1997/03/18 19:24:46 christos Exp $ */ /* *************** *** 615,621 **** VarPattern *pattern; const char *cp, *cp2; int cnt = 0; ! char startc = endc == ')' ? '(' : '}'; for (cp = *p;; cp++) { if (*cp == '=' && cnt == 0) --- 615,621 ---- VarPattern *pattern; const char *cp, *cp2; int cnt = 0; ! char startc = endc == ')' ? '(' : '{'; for (cp = *p;; cp++) { if (*cp == '=' && cnt == 0) *************** *** 633,638 **** --- 633,640 ---- for (cp2 = cp+1;; cp2++) { if ((*cp2 == ':' || *cp2 == endc) && cnt == 0) break; + if (*cp2 == '\0') + return NULL; if (*cp2 == startc) cnt++; else if (*cp2 == endc) { *************** *** 1453,1460 **** if (DEBUG(VAR)) printf("Result is \"%s\"\n", str); } ! if (*tstr == '\0') Error("Unclosed variable specification"); *lengthPtr += tstr - start; return str; --- 1455,1465 ---- if (DEBUG(VAR)) printf("Result is \"%s\"\n", str); } ! if (*tstr == '\0') { Error("Unclosed variable specification"); + /* make tstr point at the last char of the variable specification */ + tstr--; + } *lengthPtr += tstr - start; return str;