http://d.puremagic.com/issues/show_bug.cgi?id=4302
Don <clugd...@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch --- Comment #3 from Don <clugd...@yahoo.com.au> 2010-08-20 22:30:55 PDT --- The cause of the regression was this line at the end of TemplateInstance::semantic() around line 3980: if (global.gag) { // Try to reset things so we can try again later to instantiate it tempdecl->instances.remove(tempdecl_instance_idx); + semanticRun = 0; + inst = NULL; } This code was added in svn 477, to fix bug 4042. BUT... removing those lines, bug 4042 still passes, and the test suite still passes. So patch option #1 is to simply remove them. Patch option #2: If those lines should really remain, then we should definitely not reset for a later attempt, if the instantiation was made from inside a static if. You only get chance at a static if. Note that template constraints set the SCOPEstaticif flag. // template.c, line 3982. if (global.gag) { // Try to reset things so we can try again later to instantiate it tempdecl->instances.remove(tempdecl_instance_idx); + if (!(sc->flags & SCOPEstaticif)) + { semanticRun = 0; inst = NULL; + } } Thirdly, it is in fact possible that what we're seeing is a consequence of bug4269, ie is a bug in is(). If so, then this patch is just a temporary workaround until that deeper bug is fixed. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------