Module Name:    src
Committed By:   christos
Date:           Thu Nov 20 20:49:06 UTC 2014

Modified Files:
        src/usr.bin/xlint/lint1: init.c

Log Message:
Always set i_brace in the struct case.
Cleanup some debugging.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/usr.bin/xlint/lint1/init.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/xlint/lint1/init.c
diff -u src/usr.bin/xlint/lint1/init.c:1.25 src/usr.bin/xlint/lint1/init.c:1.26
--- src/usr.bin/xlint/lint1/init.c:1.25	Thu Apr 17 12:29:26 2014
+++ src/usr.bin/xlint/lint1/init.c	Thu Nov 20 15:49:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: init.c,v 1.25 2014/04/17 16:29:26 christos Exp $	*/
+/*	$NetBSD: init.c,v 1.26 2014/11/20 20:49:06 christos Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: init.c,v 1.25 2014/04/17 16:29:26 christos Exp $");
+__RCSID("$NetBSD: init.c,v 1.26 2014/11/20 20:49:06 christos Exp $");
 #endif
 
 #include <stdlib.h>
@@ -89,7 +89,7 @@ memberpush(sb)
 {
 	namlist_t *nam = xcalloc(1, sizeof (namlist_t)); 
 	nam->n_name = sb->sb_name;
-	DPRINTF(("memberpush = %s\n", nam->n_name));
+	DPRINTF(("%s: %s\n", __func__, nam->n_name));
 	if (namedmem == NULL) {
 		nam->n_prev = nam->n_next = nam;
 		namedmem = nam;
@@ -108,7 +108,7 @@ memberpush(sb)
 static void
 memberpop()
 {
-	DPRINTF(("memberpop = %s\n", namedmem->n_name));
+	DPRINTF(("%s: %s\n", __func__, namedmem->n_name));
 	if (namedmem->n_next == namedmem) {
 		free(namedmem);
 		namedmem = NULL;
@@ -164,27 +164,34 @@ popi2(void)
 	istk_t	*istk;
 	sym_t	*m;
 
-	DPRINTF(("popi2(%s): brace=%d count=%d namedmem %d\n",
+	DPRINTF(("%s+(%s): brace=%d count=%d namedmem %d\n", __func__,
 	    tyname(buf, sizeof(buf),
 	    initstk->i_type ? initstk->i_type : initstk->i_subt),
 	    initstk->i_brace, initstk->i_cnt, initstk->i_namedmem));
 	initstk = (istk = initstk)->i_nxt;
-	if (initstk == NULL)
-		LERROR("popi2()");
 	free(istk);
 
 	istk = initstk;
+	if (istk == NULL)
+		LERROR("popi2()");
+
+	DPRINTF(("%s-(%s): brace=%d count=%d namedmem %d\n", __func__,
+	    tyname(buf, sizeof(buf),
+	    initstk->i_type ? initstk->i_type : initstk->i_subt),
+	    initstk->i_brace, initstk->i_cnt, initstk->i_namedmem));
 
 	istk->i_cnt--;
 	if (istk->i_cnt < 0)
 		LERROR("popi2()");
 
-	DPRINTF(("popi2(): %d %s\n", istk->i_cnt,
+	DPRINTF(("%s(): %d %s\n", __func__, istk->i_cnt,
 	    namedmem ? namedmem->n_name : "*null*"));
 	if (istk->i_cnt >= 0 && namedmem != NULL) {
-		DPRINTF(("popi2(): %d %s %s\n", istk->i_cnt,
+		DPRINTF(("%s(): %d %s %s\n", __func__, istk->i_cnt,
 		    tyname(buf, sizeof(buf), istk->i_type), namedmem->n_name));
 		for (m = istk->i_type->t_str->memb; m != NULL; m = m->s_nxt) {
+			DPRINTF(("%s(): pop [%s %s]\n", __func__,
+			    namedmem->n_name, m->s_name));
 			if (m->s_field && m->s_name == unnamed)
 				continue;
 			if (strcmp(m->s_name, namedmem->n_name) == 0) {
@@ -195,6 +202,7 @@ popi2(void)
 			}
 		}
 		error(101, namedmem->n_name);
+		DPRINTF(("%s(): namedmem %s\n", __func__, namedmem->n_name));
 		memberpop();
 		istk->i_namedmem = 1;
 		return;
@@ -209,6 +217,7 @@ popi2(void)
 			m = istk->i_mem = istk->i_mem->s_nxt;
 			if (m == NULL)
 				LERROR("popi2()");
+			DPRINTF(("%s(): pop %s\n", __func__, m->s_name));
 		} while (m->s_field && m->s_name == unnamed);
 		istk->i_subt = m->s_type;
 	}
@@ -217,27 +226,32 @@ popi2(void)
 static void
 popinit(int brace)
 {
-	DPRINTF(("popinit(%d)\n", brace));
+	DPRINTF(("%s(%d)\n", __func__, brace));
 
 	if (brace) {
 		/*
 		 * Take all entries, including the first which requires
 		 * a closing brace, from the stack.
 		 */
+		DPRINTF(("%s: brace\n", __func__));
 		do {
 			brace = initstk->i_brace;
+			DPRINTF(("%s: loop brace %d\n", __func__, brace));
 			popi2();
 		} while (!brace);
+		DPRINTF(("%s: brace done\n", __func__));
 	} else {
 		/*
 		 * Take all entries which cannot be used for further
 		 * initializers from the stack, but do this only if
 		 * they do not require a closing brace.
 		 */
+		DPRINTF(("%s: no brace\n", __func__));
 		while (!initstk->i_brace &&
 		       initstk->i_cnt == 0 && !initstk->i_nolimit) {
 			popi2();
 		}
+		DPRINTF(("%s: no brace done\n", __func__));
 	}
 }
 
@@ -255,7 +269,7 @@ pushinit(void)
 
 	/* Extend an incomplete array type by one element */
 	if (istk->i_cnt == 0) {
-		DPRINTF(("pushinit(extend) %s\n", tyname(buf, sizeof(buf),
+		DPRINTF(("%s(extend) %s\n", __func__, tyname(buf, sizeof(buf),
 		    istk->i_type)));
 		/*
 		 * Inside of other aggregate types must not be an incomplete
@@ -285,17 +299,17 @@ pushinit(void)
 again:
 	istk = initstk;
 
-	DPRINTF(("pushinit(%s)\n", tyname(buf, sizeof(buf), istk->i_type)));
+	DPRINTF(("%s(%s)\n", __func__, tyname(buf, sizeof(buf), istk->i_type)));
 	switch (istk->i_type->t_tspec) {
 	case ARRAY:
 		if (namedmem) {
-			DPRINTF(("pushinit ARRAY %s brace=%d\n",
+			DPRINTF(("%s: ARRAY %s brace=%d\n", __func__,
 			    namedmem->n_name, istk->i_brace));
 			goto pop;
 		} else if (istk->i_nxt->i_namedmem) {
-			DPRINTF(("pushinit ARRAY brace=%d, namedmem=%d\n",
-			    istk->i_brace, istk->i_nxt->i_namedmem));
 			istk->i_brace = 1;
+			DPRINTF(("%s ARRAY brace=%d, namedmem=%d\n", __func__,
+			    istk->i_brace, istk->i_nxt->i_namedmem));
 		}
 
 		if (incompl(istk->i_type) && istk->i_nxt->i_nxt != NULL) {
@@ -307,7 +321,7 @@ again:
 		istk->i_subt = istk->i_type->t_subt;
 		istk->i_nolimit = incompl(istk->i_type);
 		istk->i_cnt = istk->i_type->t_dim;
-		DPRINTF(("elements array %s[%d] %s\n",
+		DPRINTF(("%s: elements array %s[%d] %s\n", __func__,
 		    tyname(buf, sizeof(buf), istk->i_subt), istk->i_cnt,
 		    namedmem ? namedmem->n_name : "*none*"));
 		break;
@@ -324,15 +338,15 @@ again:
 			return;
 		}
 		cnt = 0;
-		DPRINTF(("2. member lookup %s %s\n",
+		DPRINTF(("%s: 2. member lookup %s %s i_namedmem=%d\n", __func__,
 		    tyname(buf, sizeof(buf), istk->i_type),
-		    namedmem ? namedmem->n_name : "*none*"));
+		    namedmem ? namedmem->n_name : "*none*", istk->i_namedmem));
 		for (m = istk->i_type->t_str->memb; m != NULL; m = m->s_nxt) {
 			if (m->s_field && m->s_name == unnamed)
 				continue;
 			if (namedmem != NULL) {
-				DPRINTF(("pushinit():[member:%s, looking:%s]\n",
-				    m->s_name, namedmem->n_name));
+				DPRINTF(("%s():[member:%s, looking:%s]\n",
+				    __func__, m->s_name, namedmem->n_name));
 				if (strcmp(m->s_name, namedmem->n_name) == 0) {
 					cnt++;
 					break;
@@ -346,17 +360,22 @@ again:
 		}
 		if (namedmem != NULL) {
 			if (m == NULL) {
-				DPRINTF(("pushinit(): struct pop\n"));
+				DPRINTF(("%s(): struct pop\n", __func__));
 				goto pop;
-			} else {
-				istk->i_mem = m;
-				istk->i_subt = m->s_type;
-			}
+			} 
+			istk->i_mem = m;
+			istk->i_subt = m->s_type;
 			istk->i_namedmem = 1;
-			istk->i_brace = 1;
+			DPRINTF(("%s(): namedmem %s\n", __func__,
+			    namedmem->n_name));
 			memberpop();
 			cnt = istk->i_type->t_tspec == STRUCT ? 2 : 1;
 		}
+		istk->i_brace = 1;
+		DPRINTF(("%s(): %s brace=%d\n", __func__,
+		    tyname(buf, sizeof(buf),
+		    istk->i_type ? istk->i_type : istk->i_subt),
+		    istk->i_brace));
 		if (cnt == 0) {
 			/* cannot init. struct/union with no named member */
 			error(179);
@@ -367,7 +386,7 @@ again:
 		break;
 	default:
 		if (namedmem) {
-			DPRINTF(("pushinit(): pop\n"));
+			DPRINTF(("%s(): pop\n", __func__));
 	pop:
 			inxt = initstk->i_nxt;
 			free(istk);
@@ -415,7 +434,7 @@ nextinit(int brace)
 {
 	char buf[64];
 
-	DPRINTF(("nextinit(%d)\n", brace));
+	DPRINTF(("%s(%d)\n", __func__, brace));
 	if (!brace) {
 		if (initstk->i_type == NULL &&
 		    !issclt(initstk->i_subt->t_tspec)) {
@@ -444,15 +463,20 @@ nextinit(int brace)
 			testinit();
 		if (!initerr)
 			pushinit();
-		if (!initerr)
+		if (!initerr) {
 			initstk->i_brace = 1;
+			DPRINTF(("%s(): %p %s brace=%d\n", __func__,
+			    namedmem, tyname(buf, sizeof(buf),
+			    initstk->i_type ? initstk->i_type :
+			    initstk->i_subt), initstk->i_brace));
+		}
 	}
 }
 
 void
 initlbr(void)
 {
-	DPRINTF(("initlbr\n"));
+	DPRINTF(("%s\n", __func__));
 
 	if (initerr)
 		return;
@@ -476,7 +500,7 @@ initlbr(void)
 void
 initrbr(void)
 {
-	DPRINTF(("initrbr\n"));
+	DPRINTF(("%s\n", __func__));
 
 	if (initerr)
 		return;
@@ -497,8 +521,8 @@ mkinit(tnode_t *tn)
 	char	buf[64], sbuf[64];
 #endif
 
-	DPRINTF(("mkinit(%s %s)\n", tyname(buf, sizeof(buf), tn->tn_type),
-	   prtnode(sbuf, sizeof(sbuf), tn)));
+	DPRINTF(("%s(%s %s)\n", __func__, tyname(buf, sizeof(buf), tn->tn_type),
+	    prtnode(sbuf, sizeof(sbuf), tn)));
 	if (initerr || tn == NULL)
 		return;
 
@@ -540,7 +564,7 @@ mkinit(tnode_t *tn)
 		return;
 
 	initstk->i_cnt--;
-	DPRINTF(("mkinit() cnt=%d tn=%p\n", initstk->i_cnt, tn));
+	DPRINTF(("%s() cnt=%d tn=%p\n", __func__, initstk->i_cnt, tn));
 	/* Create a temporary node for the left side. */
 	ln = tgetblk(sizeof (tnode_t));
 	ln->tn_op = NAME;
@@ -616,7 +640,7 @@ strginit(tnode_t *tn)
 	 * the string.
 	 */
 	if (istk->i_subt != NULL && istk->i_subt->t_tspec == ARRAY) {
-		DPRINTF(("strginit subt array\n"));
+		DPRINTF(("%s: subt array\n", __func__));
 		t = istk->i_subt->t_subt->t_tspec;
 		if (!((strg->st_tspec == CHAR &&
 		       (t == CHAR || t == UCHAR || t == SCHAR)) ||
@@ -627,7 +651,7 @@ strginit(tnode_t *tn)
 		pushinit();
 		istk = initstk;
 	} else if (istk->i_type != NULL && istk->i_type->t_tspec == ARRAY) {
-		DPRINTF(("strginit type array\n"));
+		DPRINTF(("%s: type array\n", __func__));
 		t = istk->i_type->t_subt->t_tspec;
 		if (!((strg->st_tspec == CHAR &&
 		       (t == CHAR || t == UCHAR || t == SCHAR)) ||

Reply via email to