www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 4238] New: Segfault(statement.c): with(typeof(int))

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4238

           Summary: Segfault(statement.c): with(typeof(int))
           Product: D
           Version: 1.020
          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


--- Comment #0 from Don <clugdbug yahoo.com.au> 2010-05-26 13:03:03 PDT ---
TEST CASE:
-----
void bug4237()
{
   int s;
   with(typeof(s)) {}
}
----

PATCH (D2 svn 502):
// WithStatement::semantic. line 3639: segfaults because toDsymbol(sc)
// returns null.

{   TypeExp *es = (TypeExp *)exp;

-        sym = es->type->toDsymbol(sc)->isScopeDsymbol();
+        Dsymbol *dsym = es->type->toDsymbol(sc);
+        sym = dsym ? dsym->isScopeDsymbol() : NULL;

        if (!sym)
        {   error("%s has no members", es->toChars());
            body = body->semantic(sc);
            return this;
        }
    }

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 26 2010
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4238



--- Comment #1 from Don <clugdbug yahoo.com.au> 2010-05-26 13:20:16 PDT ---
Darn it, waited to long before hitting submit, and another bug snuck in before
this one -- test case should be changed to bug4238(). <g>.

Anyway, if you add one line to the patch, it fixes bug 1413. I was actually
trying to generate a case where 1413 matters, but failed. But I found this case
instead.

PATCH (D2 svn 502):
// WithStatement::semantic. line 3639: segfaults because toDsymbol(sc)
// returns null.

{   TypeExp *es = (TypeExp *)exp;

-        sym = es->type->toDsymbol(sc)->isScopeDsymbol();
+        Dsymbol *dsym = es->type->toDsymbol(sc);
+        sym = dsym ? dsym->isScopeDsymbol() : NULL;

        if (!sym)
        {   error("%s has no members", es->toChars());
+           if (body)
            body = body->semantic(sc);
            return this;
        }
    }

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 26 2010
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4238


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla digitalmars.com
         Resolution|                            |FIXED


--- Comment #2 from Walter Bright <bugzilla digitalmars.com> 2010-06-28
11:59:09 PDT ---
http://www.dsource.org/projects/dmd/changeset/566

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 28 2010