--- /tmp/work/old/src/usr.bin/xlint/lint2/read.c	2010-11-25 20:06:38.000000000 +0200
+++ src/usr.bin/xlint/lint2/read.c	2010-11-25 20:06:38.000000000 +0200
@@ -540,7 +540,7 @@
 	type_t	*tp;
 	int	narg, i, osdef = 0;
 	size_t	tlen;
-	u_short	tidx;
+	u_short	tidx, sidx;
 	int	h;
 
 	/* If we have this type already, return it's index. */
@@ -619,10 +619,12 @@
 	case ARRAY:
 		tp->t_dim = (int)strtol(cp, &eptr, 10);
 		cp = eptr;
-		tp->t_subt = TP(inptype(cp, &cp));
+		sidx = inptype(cp, &cp); /* force seq. point! (ditto below) */
+		tp->t_subt = TP(sidx);
 		break;
 	case PTR:
-		tp->t_subt = TP(inptype(cp, &cp));
+		sidx = inptype(cp, &cp);
+		tp->t_subt = TP(sidx);
 		break;
 	case FUNC:
 		c = *cp;
@@ -638,11 +640,13 @@
 					tp->t_vararg = 1;
 					cp++;
 				} else {
-					tp->t_args[i] = TP(inptype(cp, &cp));
+					sidx = inptype(cp, &cp);
+					tp->t_args[i] = TP(sidx);
 				}
 			}
 		}
-		tp->t_subt = TP(inptype(cp, &cp));
+		sidx = inptype(cp, &cp);
+		tp->t_subt = TP(sidx);
 		break;
 	case ENUM:
 		tp->t_tspec = INT;
