digitalmars.D.bugs - [Issue 4089] New: crash when creating JSON output for incomplete struct
- d-bugmail puremagic.com (55/55) Apr 14 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4089
- d-bugmail puremagic.com (42/42) Apr 14 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4089
- d-bugmail puremagic.com (42/42) Apr 21 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4089
- d-bugmail puremagic.com (12/12) May 05 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4089
http://d.puremagic.com/issues/show_bug.cgi?id=4089 Summary: crash when creating JSON output for incomplete struct Product: D Version: unspecified Platform: Other OS/Version: Windows Status: NEW Keywords: ice-on-valid-code, patch Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: r.sagitario gmx.de PDT --- This one-line code: /// test.d struct X; causes a crash when executing dmd -c -X test.d Here's a patch Index: json.c =================================================================== --- json.c (revision 432) +++ json.c (working copy) -307,16 +307,19 } } - JsonString(buf, Pmembers); - buf->writestring(" : [\n"); - size_t offset = buf->offset; - for (int i = 0; i < members->dim; i++) - { Dsymbol *s = (Dsymbol *)members->data[i]; - if (offset != buf->offset) - { buf->writestring(",\n"); - offset = buf->offset; + if(members) + { + JsonString(buf, Pmembers); + buf->writestring(" : [\n"); + size_t offset = buf->offset; + for (int i = 0; i < members->dim; i++) + { Dsymbol *s = (Dsymbol *)members->data[i]; + if (offset != buf->offset) + { buf->writestring(",\n"); + offset = buf->offset; + } + s->toJsonBuffer(buf); } - s->toJsonBuffer(buf); } JsonRemoveComma(buf); buf->writestring("]\n"); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 14 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4089 PDT --- sorry, the patch produced wrong brackets. Here's a better version: Index: json.c =================================================================== --- json.c (revision 432) +++ json.c (working copy) -307,19 +307,23 } } - JsonString(buf, Pmembers); - buf->writestring(" : [\n"); - size_t offset = buf->offset; - for (int i = 0; i < members->dim; i++) - { Dsymbol *s = (Dsymbol *)members->data[i]; - if (offset != buf->offset) - { buf->writestring(",\n"); - offset = buf->offset; + if(members) + { + JsonString(buf, Pmembers); + buf->writestring(" : [\n"); + size_t offset = buf->offset; + for (int i = 0; i < members->dim; i++) + { Dsymbol *s = (Dsymbol *)members->data[i]; + if (offset != buf->offset) + { buf->writestring(",\n"); + offset = buf->offset; + } + s->toJsonBuffer(buf); } - s->toJsonBuffer(buf); + JsonRemoveComma(buf); + buf->writestring("]\n"); } JsonRemoveComma(buf); - buf->writestring("]\n"); buf->writestring("}\n"); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 14 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4089 PDT --- An almost identical patch is also needed for incomplete EnumDeclarations: Index: json.c =================================================================== --- json.c (revision 433) +++ json.c (working copy) -386,19 +386,23 if (memtype) JsonProperty(buf, "base", memtype->toChars()); - JsonString(buf, Pmembers); - buf->writestring(" : [\n"); - size_t offset = buf->offset; - for (int i = 0; i < members->dim; i++) - { Dsymbol *s = (Dsymbol *)members->data[i]; - if (offset != buf->offset) - { buf->writestring(",\n"); - offset = buf->offset; + if(members) + { + JsonString(buf, Pmembers); + buf->writestring(" : [\n"); + size_t offset = buf->offset; + for (int i = 0; i < members->dim; i++) + { Dsymbol *s = (Dsymbol *)members->data[i]; + if (offset != buf->offset) + { buf->writestring(",\n"); + offset = buf->offset; + } + s->toJsonBuffer(buf); } - s->toJsonBuffer(buf); + JsonRemoveComma(buf); + buf->writestring("]\n"); } JsonRemoveComma(buf); - buf->writestring("]\n"); buf->writestring("}\n"); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 21 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4089 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |clugdbug yahoo.com.au Resolution| |FIXED Fixed DMD2.044 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 05 2010