1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 06:05:24 +02:00

Bug 322628 - [disassembly] DisassemblyDocument#computeIndexInPositionListFirst() broken as called by addModelPositionFirst()

This commit is contained in:
Anton Leherbauer 2010-08-20 07:57:21 +00:00
parent 7a22acef41
commit 1342519672

View file

@ -216,9 +216,10 @@ public class DisassemblyDocument extends REDDocument implements IDisassemblyDocu
while (left <= right) { while (left <= right) {
mid = (left + right) / 2; mid = (left + right) / 2;
AddressRangePosition range = positions.get(mid); AddressRangePosition range = positions.get(mid);
if (address.compareTo(range.fAddressOffset) < 0) { int compareSign = address.compareTo(range.fAddressOffset);
if (compareSign < 0) {
right = mid - 1; right = mid - 1;
} else if (address.compareTo(range.fAddressOffset) == 0) { } else if (compareSign == 0) {
break; break;
} else if (address.compareTo(range.fAddressOffset.add(range.fAddressLength)) >= 0) { } else if (address.compareTo(range.fAddressOffset.add(range.fAddressLength)) >= 0) {
left = mid + 1; left = mid + 1;
@ -228,9 +229,7 @@ public class DisassemblyDocument extends REDDocument implements IDisassemblyDocu
} }
int idx = mid; int idx = mid;
AddressRangePosition p = positions.get(idx); AddressRangePosition p = positions.get(idx);
if (address.compareTo(p.fAddressOffset.add(p.fAddressLength)) > 0) { if (address.compareTo(p.fAddressOffset) == 0) {
++idx;
} else if (address.compareTo(p.fAddressOffset) == 0) {
do { do {
--idx; --idx;
if (idx < 0) { if (idx < 0) {
@ -239,6 +238,8 @@ public class DisassemblyDocument extends REDDocument implements IDisassemblyDocu
p = positions.get(idx); p = positions.get(idx);
} while (address.compareTo(p.fAddressOffset) == 0); } while (address.compareTo(p.fAddressOffset) == 0);
++idx; ++idx;
} else if (address.compareTo(p.fAddressOffset.add(p.fAddressLength)) >= 0) {
++idx;
} }
return idx; return idx;
} }