digitalmars.D.bugs - [Issue 4371] New: template tuple [misuse?] segfault
- d-bugmail puremagic.com (27/27) Jun 22 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4371
- d-bugmail puremagic.com (39/39) Nov 26 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4371
- d-bugmail puremagic.com (14/14) Nov 26 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4371
- d-bugmail puremagic.com (18/18) Nov 26 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4371
- d-bugmail puremagic.com (15/15) Jan 28 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4371
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
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: -------
Jun 22 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4371
Don <clugdbug yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch
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: -------
Nov 26 2010
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
And the code was valid.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 26 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4371
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: -------
Nov 26 2010
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
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: -------
Jan 28 2012









d-bugmail puremagic.com 