From: eck Date: Wed, 18 Apr 1990 13:03:05 +0000 (+0000) Subject: two -D options for one identifier didn't work X-Git-Tag: release-5-5~1740 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=b44938412e2359c61ce7ef4b632ed6a153faa974;p=ack.git two -D options for one identifier didn't work --- diff --git a/lang/cem/cpp.ansi/options.c b/lang/cem/cpp.ansi/options.c index 5f253c39a..a32bfe080 100644 --- a/lang/cem/cpp.ansi/options.c +++ b/lang/cem/cpp.ansi/options.c @@ -40,6 +40,7 @@ do_option(text) case 'D' : /* -Dname : predefine name */ { register char *cp = text, *name, *mactext; + unsigned maclen; if (class(*cp) != STIDF && class(*cp) != STELL) { error("identifier missing in -D%s", text); @@ -48,18 +49,20 @@ do_option(text) name = cp; while (*cp && in_idf(*cp)) ++cp; - if (!*cp) /* -Dname */ - mactext = "1"; - else + if (!*cp) { /* -Dname */ + maclen = 1; + mactext = Salloc("1", 2); + } else if (*cp == '=') { /* -Dname=text */ *cp++ = '\0'; /* end of name */ - mactext = cp; + maclen = strlen(cp); + mactext = Salloc(cp, maclen + 1); } else { /* -Dname?? */ error("malformed option -D%s", text); break; } - macro_def(str2idf(name, 0), mactext, -1, strlen(mactext), NOFLAG); + macro_def(str2idf(name, 0), mactext, -1, maclen, NOFLAG); break; } case 'I' : /* -Ipath : insert "path" into include list */