Fix #125 – Nested class context pointer invalid (D1).

Patch originally by Alexey Prokhin, thanks.
This commit is contained in:
David Nadlinger 2012-06-24 16:18:47 +02:00
parent 67f12fe8b5
commit cef19fb225
2 changed files with 23 additions and 11 deletions

View file

@ -725,13 +725,6 @@ void DtoDefineFunction(FuncDeclaration* fd)
fd->vthis->ir.irParam->isVthis = true;
DtoDwarfLocalVariable(thismem, fd->vthis);
#if DMDV1
if (fd->vthis->nestedref)
{
fd->nestedVars.insert(fd->vthis);
}
#endif
}
// give the 'nestArg' storage
@ -790,12 +783,18 @@ void DtoDefineFunction(FuncDeclaration* fd)
}
}
// need result variable? (nested)
#if DMDV1
// need result variable? (nested)
if (fd->vresult && fd->vresult->nestedref) {
Logger::println("nested vresult value: %s", fd->vresult->toChars());
fd->nestedVars.insert(fd->vresult);
}
if (fd->vthis && fd->vthis->nestedref && !fd->nestedVars.empty()) {
Logger::println("nested vthis value: %s", fd->vthis->toChars());
fd->nestedVars.insert(fd->vthis);
}
#endif
FuncGen fg;