From 6e684dd982c291b9b66e57805c58d8783a4b71ce Mon Sep 17 00:00:00 2001 From: John Cortell Date: Thu, 22 Jan 2009 19:54:28 +0000 Subject: [PATCH] Fixed bugzilla 262074. Display standard control characters (e.g., '\n') more intelligently for a variable of type char. --- .../cdt/debug/internal/core/model/CValue.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java index 89af55ad09d..09d95ef8e85 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java @@ -276,7 +276,23 @@ public class CValue extends AbstractCValue { CVariableFormat format = getParentVariable().getFormat(); if ( CVariableFormat.NATURAL.equals( format ) ) { byte byteValue = (byte)value.byteValue(); - return ((Character.isISOControl( (char)byteValue ) && byteValue != '\b' && byteValue != '\t' && byteValue != '\n' && byteValue != '\f' && byteValue != '\r') || byteValue < 0) ? Byte.toString(byteValue) : new String( new byte[]{ '\'', byteValue, '\'' } ); //$NON-NLS-1$ + switch (byteValue) { + case '\b': + return "'\\b'"; + case '\t': + return "'\\t'"; + case '\n': + return "'\\n'"; + case '\f': + return "'\\f'"; + case '\r': + return "'\\r'"; + } + + if (Character.isISOControl(byteValue) || byteValue < 0) + return Byte.toString(byteValue); + + return new String( new byte[]{ '\'', byteValue, '\'' } ); //$NON-NLS-1$ } else if ( CVariableFormat.DECIMAL.equals( format ) ) { return (isUnsigned()) ? Integer.toString( value.shortValue() ) : Integer.toString( (byte)value.byteValue() );