Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
June 23, 2010 [Issue 4371] New: template tuple [misuse?] segfault | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=4371 Summary: template tuple [misuse?] segfault Product: D Version: D2 Platform: Other OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: ellery-newcomer@utulsa.edu --- Comment #0 from Ellery Newcomer <ellery-newcomer@utulsa.edu> 2010-06-22 21:36:24 PDT --- The code: struct s(T ...){ } alias s!("hi!") t; static if(is(t U == s!(U))){ } void main(){ } The fireworks: Segmentation fault (core dumped) on compile. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
November 26, 2010 [Issue 4371] segfault(template.c) template tuple [misuse?] | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ellery Newcomer | http://d.puremagic.com/issues/show_bug.cgi?id=4371 Don <clugdbug@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch --- Comment #1 from Don <clugdbug@yahoo.com.au> 2010-11-26 00:44:26 PST --- There are two issues: (1) deduceType() can return a tuple. This causes the segfault, because it isn't a type. Fixing that stops the crash, but the code still doesn't work, because... (2) Same as bug 5164: it shouldn't try to add the symbol twice. Exactly the same fix works here. PATCH: expression.c, line 5185, IsExp::semantic(). ---------- Lyes: if (id) { - Dsymbol *s = new AliasDeclaration(loc, id, tded); + Dsymbol *s; + if (isTuple(tded)) + s = new TupleDeclaration(loc, id, &(isTuple(tded)->objects)); + else + s = new AliasDeclaration(loc, id, tded); s->semantic(sc); - if (!sc->insert(s)) - error("declaration %s is already defined", s->toChars()); if (sc->sd) s->addMember(sc, sc->sd, 1); + else if (!sc->insert(s)) + error("declaration %s is already defined", s->toChars()); } //printf("Lyes\n"); return new IntegerExp(loc, 1, Type::tbool); Lno: //printf("Lno\n"); return new IntegerExp(loc, 0, Type::tbool); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
November 26, 2010 [Issue 4371] segfault(template.c) template tuple in is() expression | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ellery Newcomer | http://d.puremagic.com/issues/show_bug.cgi?id=4371 Don <clugdbug@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|ice-on-invalid-code |ice-on-valid-code Summary|segfault(template.c) |segfault(template.c) |template tuple [misuse?] |template tuple in is() | |expression OS/Version|Linux |All --- Comment #2 from Don <clugdbug@yahoo.com.au> 2010-11-26 00:46:05 PST --- And the code was valid. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
November 26, 2010 [Issue 4371] segfault(template.c) template tuple in is() expression | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ellery Newcomer | http://d.puremagic.com/issues/show_bug.cgi?id=4371 --- Comment #3 from Don <clugdbug@yahoo.com.au> 2010-11-26 12:35:50 PST --- There's something wrong with the patch. This part breaks Phobos unit tests: - if (!sc->insert(s)) - error("declaration %s is already defined", s->toChars()); if (sc->sd) s->addMember(sc, sc->sd, 1); + else if (!sc->insert(s)) + error("declaration %s is already defined", s->toChars()); Changing the first of those lines to: if (!isTuple(tded) && !sc->insert(s)) error("declaration %s is already defined", s->toChars()); allows the test code to compile. But I don't really understand why it should be necessary. Possibly it's another bug which is being triggered. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
January 28, 2012 [Issue 4371] segfault(template.c) template tuple in is() expression | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ellery Newcomer | http://d.puremagic.com/issues/show_bug.cgi?id=4371 Walter Bright <bugzilla@digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla@digitalmars.com Resolution| |FIXED --- Comment #4 from Walter Bright <bugzilla@digitalmars.com> 2012-01-28 12:44:18 PST --- Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/a48c43c9e3b7dc57092c1a72c1e019c46178f11b Commit pushed to dmd-1.x at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/999ef822efdca31c6983ea89805b178526c53c3d -- 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