Bug 417903. Don't crash if _SymGetLineFromAddr64 fails. r=benjamin,a=beltzner

git-svn-id: svn://10.0.0.236/trunk@246423 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
roc+%cs.cmu.edu
2008-02-25 01:16:41 +00:00
parent 8d0b713493
commit 28b54e9ef7

View File

@@ -909,6 +909,10 @@ BOOL SymGetModuleInfoEspecial64(HANDLE aProcess, DWORD64 aAddr, PIMAGEHLP_MODULE
DWORD displacement = 0;
BOOL lineRes = FALSE;
lineRes = _SymGetLineFromAddr64(aProcess, aAddr, &displacement, aLineInfo);
if (!lineRes) {
// Clear out aLineInfo to indicate that it's not valid
memset(aLineInfo, 0, sizeof(*aLineInfo));
}
}
return retval;
@@ -984,9 +988,12 @@ NS_DescribeCodeAddress(void *aPC, nsCodeAddressDetails *aDetails)
PL_strncpyz(aDetails->library, modInfo.ModuleName,
sizeof(aDetails->library));
aDetails->loffset = (char*) aPC - (char*) modInfo.BaseOfImage;
PL_strncpyz(aDetails->filename, lineInfo.FileName,
sizeof(aDetails->filename));
aDetails->lineno = lineInfo.LineNumber;
if (lineInfo.FileName) {
PL_strncpyz(aDetails->filename, lineInfo.FileName,
sizeof(aDetails->filename));
aDetails->lineno = lineInfo.LineNumber;
}
}
ULONG64 buffer[(sizeof(SYMBOL_INFO) +