[Issue 3401] Segfault(expression.c) on invariant + method overload
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Oct 15 02:07:04 PDT 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3401
Don <clugdbug at yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch
--- Comment #3 from Don <clugdbug at yahoo.com.au> 2009-10-15 02:07:03 PDT ---
func.c, line 1568 (DMD 1.050), in mergeFensure(): Need to check fdensure as
well as fensure.
FuncDeclaration *fdv = (FuncDeclaration *)foverrides.data[i];
sf = fdv->mergeFensure(sf);
- if (fdv->fensure)
+ if (fdv->fensure && fdv->fdensure)
{
//printf("fdv->fensure: %s\n", fdv->fensure->toChars());
// Make the call: __ensure(result)
Expression *eresult = NULL;
Likewise in mergeFrequire, line 1524 should probably be:
FuncDeclaration *fdv = (FuncDeclaration *)foverrides.data[i];
sf = fdv->mergeFrequire(sf);
- if (fdv->frequire)
+ if (fdv->frequire && fdv->fdrequire)
{
//printf("fdv->frequire: %s\n", fdv->frequire->toChars());
/* Make the call:
* try { __require(); }
* catch { frequire; }
*/
Expression *eresult = NULL;
Expression *e = new CallExp(loc, new VarExp(loc, fdv->fdrequire),
eresult);
Statement *s2 = new ExpStatement(loc, e);
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list