August 12, 2009 [Issue 3246] New: ICE(init.c) using indexed array initializer on local array | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=3246 Summary: ICE(init.c) using indexed array initializer on local array Product: D Version: 1.046 Platform: Other OS/Version: Windows Status: NEW Keywords: ice-on-invalid-code, patch Severity: normal Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: clugdbug@yahoo.com.au Reported by Ali Cehreli. void main() { int[4] static_1 = [ 3:212 ]; } PATCH against DMD2.031. We need to make sure the array literal is big enough to include the last mentioned element. We need to return ErrorExp, not NULL, otherwise it will still segfault on cases like int[4] x = [32: 1]; because VerDeclaration::semantic assumes a NULL result means that it should run semantic on the initializer. Index: init.c =================================================================== --- init.c (revision 194) +++ init.c (working copy) @@ -422,6 +422,13 @@ else edim = value.dim; + for (size_t i = 0, j = 0; i < value.dim; i++, j++) + { + if (index.data[i]) + j = ((Expression *)index.data[i])->toInteger(); + if (j >=edim) edim = j+1; + } + elements = new Expressions(); elements->setDim(edim); for (size_t i = 0, j = 0; i < value.dim; i++, j++) @@ -464,7 +471,7 @@ Lno: delete elements; error(loc, "array initializers as expressions are not allowed"); - return NULL; + return new ErrorExp(); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 03, 2009 [Issue 3246] ICE(init.c) using indexed array initializer on local array | ||||
---|---|---|---|---|
| ||||
Posted in reply to clugdbug@yahoo.com.au | http://d.puremagic.com/issues/show_bug.cgi?id=3246 Walter Bright <bugzilla@digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla@digitalmars.com Resolution| |FIXED --- Comment #1 from Walter Bright <bugzilla@digitalmars.com> 2009-09-03 13:27:57 PDT --- Fixed dmd 1.047 and 2.032 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation