http://d.puremagic.com/issues/show_bug.cgi?id=4753
Rainer Schuetze <r.sagita...@gmx.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |r.sagita...@gmx.de --- Comment #2 from Rainer Schuetze <r.sagita...@gmx.de> 2010-08-30 15:15:59 PDT --- TypeTypeof should have a recursion check similar to TypeFunction and TypeTypedef. The test case compiles with the following patch, without reverting r634. Index: mtype.c =================================================================== --- mtype.c (revision 638) +++ mtype.c (working copy) @@ -5866,6 +5866,7 @@ TypeTypeof::TypeTypeof(Loc loc, Expression *exp) : TypeQualified(Ttypeof, loc) { + inuse = 0; this->exp = exp; } @@ -5909,6 +5910,13 @@ //printf("TypeTypeof::semantic() %p\n", this); //static int nest; if (++nest == 50) *(char*)0=0; + if (inuse) + { + inuse = 2; + error(loc, "circular typeof definition"); + return Type::terror; + } + inuse++; #if 0 /* Special case for typeof(this) and typeof(super) since both @@ -6010,9 +6018,11 @@ goto Lerr; } } + inuse--; return t; Lerr: + inuse--; return tvoid; // should this be Type::terror? } Index: mtype.h =================================================================== --- mtype.h (revision 638) +++ mtype.h (working copy) @@ -659,6 +659,7 @@ struct TypeTypeof : TypeQualified { Expression *exp; + int inuse; TypeTypeof(Loc loc, Expression *exp); Type *syntaxCopy(); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------