[net.bugs.usg] Amazing bug in SVR2 cc driver

gwyn@brl-tgr.ARPA (Doug Gwyn <gwyn>) (01/13/86)

/*	@(#)cc.c	1.5	*/
/*
 * cc command -- calls the appropriate passes of the
 *		c compiler, assembler, and loader.
 */

char	release[] = "@(#) C rel 6.0";
...
	case 'E':
		exflag++;
	case 'P':
		pflag++;
		cflag++;
	case 'D':
	case 'I':
	case 'U':
	case 'C':
		if (nlist[Xcp] >= nargs) {
			error("Too many EPDIUC options", (char *)NULL);
			continue;
		}
		if (c == 'E' || c == 'P' || c == 'C')	/* DAG -- bug fix */
			list[Xcp][nlist[Xcp]] = stralloc(3);	/* DAG */
		else	/* c == 'D' || c == 'I' || c == 'U' */	/* DAG */
			list[Xcp][nlist[Xcp]] = stralloc(strlen(optarg)+2);
		list[Xcp][nlist[Xcp]][0] = '-';
		list[Xcp][nlist[Xcp]][1] = c;
		list[Xcp][nlist[Xcp]][2] = '\0';
		if (c == 'D' || c == 'I' || c == 'U')	/* DAG -- bug fix */
			strcat(list[Xcp][nlist[Xcp]], optarg);
		nlist[Xcp]++;
		continue;