Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] MemoryManager fixes

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/ChangeLog,v
retrieving revision 1.35
diff -u -r1.35 ChangeLog
--- ChangeLog	18 Nov 2002 19:04:55 -0000	1.35
+++ ChangeLog	20 Nov 2002 14:39:12 -0000
@@ -1,3 +1,10 @@
+2002-11-19 Alain Magloire
+
+	* src/.../mi/core/cdi/MemoryManager.java (compareBlocks):
+	The startAddress() may have change for example if we were
+	watching "char *p;" and the address move "p++".  Take this
+	into account now.
+
 2002-11-18 Alain Magloire
 
 	* src/.../mi/core/cdi/StackFrame.java (getCurrentStackFrame):
Index: src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java,v
retrieving revision 1.10
diff -u -r1.10 MemoryManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java	1 Nov 2002 16:43:24 -0000	1.10
+++ src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java	20 Nov 2002 14:39:12 -0000
@@ -87,17 +87,16 @@
 	 * @return Long[] array of modified addresses.
 	 */
 	Long[] compareBlocks (MemoryBlock oldBlock, MemoryBlock newBlock) throws CDIException {
-		if (oldBlock.getStartAddress() != newBlock.getStartAddress()) {
-			return new Long[0];
-		}
 		byte[] oldBytes = oldBlock.getBytes();
 		byte[] newBytes = newBlock.getBytes();
-		List aList = new ArrayList(oldBytes.length);
-		for (int i = 0; i < oldBytes.length; i++) {
-			if (i < newBytes.length) {
+		List aList = new ArrayList(newBytes.length);
+		for (int i = 0; i < newBytes.length; i++) {
+			if (i < oldBytes.length) {
 				if (oldBytes[i] != newBytes[i]) {
-					aList.add(new Long(oldBlock.getStartAddress() + i));
+					aList.add(new Long(newBlock.getStartAddress() + i));
 				}
+			} else {
+				aList.add(new Long(newBlock.getStartAddress() + i));
 			}
 		}
 		return (Long[])aList.toArray(new Long[0]);



Back to the top