From 1720457ddbd929ecc9a44f0dbaef7f460c247823 Mon Sep 17 00:00:00 2001 From: Francois Chouinard Date: Wed, 28 May 2008 13:40:49 +0000 Subject: [PATCH] Fixes for Bug234314 and Bug234289 --- .../org/eclipse/dd/dsf/debug/model/DsfMemoryBlock.java | 9 +++++++++ .../dd/dsf/concurrent/CountingRequestMonitor.java | 2 +- .../src/org/eclipse/dd/mi/service/MIMemory.java | 8 +------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/plugins/org.eclipse.dd.dsf.debug/src/org/eclipse/dd/dsf/debug/model/DsfMemoryBlock.java b/plugins/org.eclipse.dd.dsf.debug/src/org/eclipse/dd/dsf/debug/model/DsfMemoryBlock.java index 2e8a9d1affe..ebea77a8fed 100644 --- a/plugins/org.eclipse.dd.dsf.debug/src/org/eclipse/dd/dsf/debug/model/DsfMemoryBlock.java +++ b/plugins/org.eclipse.dd.dsf.debug/src/org/eclipse/dd/dsf/debug/model/DsfMemoryBlock.java @@ -472,6 +472,15 @@ public class DsfMemoryBlock extends PlatformObject implements IMemoryBlockExtens drm.setData(getData()); drm.done(); } + @Override + protected void handleFailure() { + // Bug234289: If memory read fails, return a block marked as invalid + MemoryByte[] block = new MemoryByte[fWordSize * (int) length]; + for (int i = 0; i < block.length; i++) + block[i] = new MemoryByte((byte) 0, (byte) 0); + drm.setData(block); + drm.done(); + } }); } diff --git a/plugins/org.eclipse.dd.dsf/src/org/eclipse/dd/dsf/concurrent/CountingRequestMonitor.java b/plugins/org.eclipse.dd.dsf/src/org/eclipse/dd/dsf/concurrent/CountingRequestMonitor.java index f44b2a5d4e7..a0cf84b2839 100644 --- a/plugins/org.eclipse.dd.dsf/src/org/eclipse/dd/dsf/concurrent/CountingRequestMonitor.java +++ b/plugins/org.eclipse.dd.dsf/src/org/eclipse/dd/dsf/concurrent/CountingRequestMonitor.java @@ -49,7 +49,7 @@ public class CountingRequestMonitor extends RequestMonitor { public CountingRequestMonitor(Executor executor, RequestMonitor parentRequestMonitor) { super(executor, parentRequestMonitor); - setStatus(new MultiStatus(DsfPlugin.PLUGIN_ID, 0, "Collective status for set of sub-operations.", null)); //$NON-NLS-1$ + super.setStatus(new MultiStatus(DsfPlugin.PLUGIN_ID, 0, "Collective status for set of sub-operations.", null)); //$NON-NLS-1$ } /** diff --git a/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/MIMemory.java b/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/MIMemory.java index 80feb2b52ec..fd788b130eb 100644 --- a/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/MIMemory.java +++ b/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/MIMemory.java @@ -877,13 +877,7 @@ public class MIMemory extends AbstractDsfService implements IMemory { { // Each byte is written individually (GDB power...) // so we need to keep track of the count - final CountingRequestMonitor countingRM = - new CountingRequestMonitor(getExecutor(), rm) { - @Override - protected void handleSuccess() { - rm.done(); - } - }; + final CountingRequestMonitor countingRM = new CountingRequestMonitor(getExecutor(), rm); countingRM.setDoneCount(count); // We will format the individual bytes in decimal