digitalmars.D.bugs - [Issue 5159] New: Segfault(interpret.c): calling a static function pointer variable in CTFE
- d-bugmail puremagic.com (41/41) Nov 03 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5159
- d-bugmail puremagic.com (12/12) Nov 12 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5159
http://d.puremagic.com/issues/show_bug.cgi?id=5159 Summary: Segfault(interpret.c): calling a static function pointer variable in CTFE Product: D Version: D1 & D2 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 It's not yet possible to make a test case which should compile without error. But this one segfaults on 2.050. --- int function() bug5159 = function int() { return 27; }; static assert(bug5159()); --- PATCH: interpret.c, CallExp::interpret(), line 2715. if (ecall->op == TOKstar) { // Calling a function pointer Expression * pe = ((PtrExp*)ecall)->e1; if (pe->op == TOKvar) { VarDeclaration *vd = ((VarExp *)((PtrExp*)ecall)->e1)->var->isVarDeclaration(); if (vd && vd->value && vd->value->op == TOKsymoff) fd = ((SymOffExp *)vd->value)->var->isFuncDeclaration(); else { - ecall = vd->value->interpret(istate); + ecall = getVarExp(loc, istate, vd); + if (ecall == EXP_CANT_INTERPRET) + return ecall; if (ecall->op == TOKsymoff) fd = ((SymOffExp *)ecall)->var->isFuncDeclaration(); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 03 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5159 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |FIXED 00:56:13 PST --- http://www.dsource.org/projects/dmd/changeset/752 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 12 2010