diff options
author | Rainer Schuetze <r.sagitario@gmx.de> | 2017-01-20 08:53:39 (GMT) |
---|---|---|
committer | Rainer Schuetze <r.sagitario@gmx.de> | 2017-01-20 08:53:39 (GMT) |
commit | 3e0d57ca2607de1313060df084f55173100b3596 (patch) | |
tree | 731a607347c795040880816a095a2345f84921e9 /src | |
parent | 12694e906933b1dc57d8026e4d0a4363530cf92b (diff) | |
download | cv2pdb-3e0d57ca2607de1313060df084f55173100b3596.zip cv2pdb-3e0d57ca2607de1313060df084f55173100b3596.tar.gz cv2pdb-3e0d57ca2607de1313060df084f55173100b3596.tar.bz2 |
Version 0.39: do not assume sorted line numbers per segment
Diffstat (limited to 'src')
-rw-r--r-- | src/cv2pdb.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/cv2pdb.cpp b/src/cv2pdb.cpp index 4208f3f..c95d409 100644 --- a/src/cv2pdb.cpp +++ b/src/cv2pdb.cpp @@ -2659,13 +2659,17 @@ bool CV2PDB::addSrcLines() int segend = getNextSrcLine(seg, sourceLine->offset[cnt-1]);
int seglength = (segend >= 0 ? segend - 1 - segoff : lnSegStartEnd[2*s + 1] - segoff);
+ int lineMin = lineNo[0];
+ for (int ln = 1; ln < cnt; ln++)
+ if (lineMin > lineNo[ln])
+ lineMin = lineNo[ln];
mspdb::LineInfoEntry* lineInfo = new mspdb::LineInfoEntry[cnt];
for (int ln = 0; ln < cnt; ln++)
{
lineInfo[ln].offset = sourceLine->offset[ln] - segoff;
- lineInfo[ln].line = lineNo[ln] - lineNo[0];
+ lineInfo[ln].line = lineNo[ln] - lineMin;
}
- int rc = mod->AddLines(name, seg, segoff, seglength, segoff, lineNo[0],
+ int rc = mod->AddLines(name, seg, segoff, seglength, segoff, lineMin,
(unsigned char*) lineInfo, cnt * sizeof(*lineInfo));
if (rc <= 0)
return setError("cannot add line number info to module");
|