From b44938412e2359c61ce7ef4b632ed6a153faa974 Mon Sep 17 00:00:00 2001 From: eck Date: Wed, 18 Apr 1990 13:03:05 +0000 Subject: [PATCH] two -D options for one identifier didn't work --- lang/cem/cpp.ansi/options.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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 */ -- 2.34.1