Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeodor Madan2011-04-08 13:59:12 +0000
committerTeodor Madan2011-04-08 13:59:12 +0000
commit60417d5ce531d42e6aafbf21d242cfabb9012ff1 (patch)
treebfce6483145d05517a5a779e0f1a703aecd9d2a5 /memory/org.eclipse.cdt.debug.ui.memory.traditional
parent8ac1692a9e831fdf692fca809bba69ea2e2faf6b (diff)
downloadorg.eclipse.cdt-60417d5ce531d42e6aafbf21d242cfabb9012ff1.tar.gz
org.eclipse.cdt-60417d5ce531d42e6aafbf21d242cfabb9012ff1.tar.xz
org.eclipse.cdt-60417d5ce531d42e6aafbf21d242cfabb9012ff1.zip
Bug 342239 - Traditional memory rendering lacks per byte display granularity for unreadable bytes
Diffstat (limited to 'memory/org.eclipse.cdt.debug.ui.memory.traditional')
-rw-r--r--memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java33
1 files changed, 25 insertions, 8 deletions
diff --git a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java
index 60e23b494e4..3dfd908adac 100644
--- a/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java
+++ b/memory/org.eclipse.cdt.debug.ui.memory.traditional/src/org/eclipse/cdt/debug/ui/memory/traditional/Rendering.java
@@ -1943,12 +1943,19 @@ public class Rendering extends Composite implements IDebugEventSetListener
public String getRadixText(MemoryByte bytes[], int radix,
boolean isLittleEndian)
{
- boolean readable = true;
- for(int i = 0; i < bytes.length; i++)
- if(!bytes[i].isReadable())
- readable = false;
+ boolean readableByte = false;
+ boolean allBytesReadable = true;
+ for(int i = 0; i < bytes.length; i++) {
+ if(!bytes[i].isReadable()) {
+ allBytesReadable = false;
+ } else {
+ readableByte = true;
+ }
+ }
- if(readable)
+ // convert byte to character if all bytes are readable or
+ // it is a mixed of readable&non-readable bytes and format is Hex or Binary. Bugzilla 342239
+ if (allBytesReadable || readableByte && (radix == Rendering.RADIX_HEX || radix == Rendering.RADIX_BINARY))
{
// bytes from the cache are stored as a sequential byte sequence regardless of target endian.
// the endian attribute tells us the recommended endian for display. the user may change this
@@ -1991,8 +1998,13 @@ public class Rendering extends Composite implements IDebugEventSetListener
{
for(int i = buf.length - 1; i >= 0; i--)
{
- buf[i] = hexdigits[(int) (value & 1)];
- value = value >>> 1;
+ int byteIndex = needsSwap ? bytes.length - 1 - i/8 : i/8;
+ if (bytes[byteIndex].isReadable()) {
+ buf[i] = hexdigits[(int) (value & 1)];
+ } else {
+ buf[i] = getPaddingCharacter();
+ }
+ value = value >>> 1;
}
break;
}
@@ -2009,7 +2021,12 @@ public class Rendering extends Composite implements IDebugEventSetListener
{
for(int i = buf.length - 1; i >= 0; i--)
{
- buf[i] = hexdigits[(int) (value & 15)];
+ int byteIndex = needsSwap ? bytes.length - 1 - i/2 : i/2;
+ if (bytes[byteIndex].isReadable()) {
+ buf[i] = hexdigits[(int) (value & 15)];
+ } else {
+ buf[i] = getPaddingCharacter();
+ }
value = value >>> 4;
}
break;

Back to the top