From 4389ea8a9b926e8f1d012648524e04e2796d3706 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Mon, 20 Dec 2004 23:30:57 +0000 Subject: [PATCH] Fix for bug 81698: NumberFormatException in CValue. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 4 ++ .../cdt/debug/internal/core/model/CValue.java | 68 +++++++++++-------- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 92abb7e6688..7f6cec5d24f 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2004-12-20 Mikhail Khodjaiants + Fix for bug 81698: NumberFormatException in CValue. + * CValue.java + 2004-12-16 Mikhail Khodjaiants Fix for bug 81381: Deadlock when single stepping. * CThread.java 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 7b9308aa217..69a0cc5c132 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 @@ -271,45 +271,53 @@ public class CValue extends AbstractCValue { } private String getLongValueString( ICDILongValue value ) throws CDIException { - CVariableFormat format = getParentVariable().getFormat(); - if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.DECIMAL.equals( format ) ) { - if ( isUnsigned() ) { - BigInteger bigValue = new BigInteger( value.getValueString() ); - return bigValue.toString(); + try { + CVariableFormat format = getParentVariable().getFormat(); + if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.DECIMAL.equals( format ) ) { + if ( isUnsigned() ) { + BigInteger bigValue = new BigInteger( value.getValueString() ); + return bigValue.toString(); + } + return Long.toString( value.longValue() ); + } + else if ( CVariableFormat.HEXADECIMAL.equals( format ) ) { + StringBuffer sb = new StringBuffer( "0x" ); //$NON-NLS-1$ + if ( isUnsigned() ) { + BigInteger bigValue = new BigInteger( value.getValueString() ); + sb.append( bigValue.toString( 16 ) ); + } + else + sb.append( Long.toHexString( value.longValue() ) ); + return sb.toString(); } - return Long.toString( value.longValue() ); } - else if ( CVariableFormat.HEXADECIMAL.equals( format ) ) { - StringBuffer sb = new StringBuffer( "0x" ); //$NON-NLS-1$ - if ( isUnsigned() ) { - BigInteger bigValue = new BigInteger( value.getValueString() ); - sb.append( bigValue.toString( 16 ) ); - } - else - sb.append( Long.toHexString( value.longValue() ) ); - return sb.toString(); + catch( NumberFormatException e ) { } return null; } private String getLongLongValueString( ICDILongLongValue value ) throws CDIException { - CVariableFormat format = getParentVariable().getFormat(); - if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.DECIMAL.equals( format ) ) { - if ( isUnsigned() ) { - BigInteger bigValue = new BigInteger( value.getValueString() ); - return bigValue.toString(); + try { + CVariableFormat format = getParentVariable().getFormat(); + if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.DECIMAL.equals( format ) ) { + if ( isUnsigned() ) { + BigInteger bigValue = new BigInteger( value.getValueString() ); + return bigValue.toString(); + } + return Long.toString( value.longValue() ); + } + else if ( CVariableFormat.HEXADECIMAL.equals( format ) ) { + StringBuffer sb = new StringBuffer( "0x" ); //$NON-NLS-1$ + if ( isUnsigned() ) { + BigInteger bigValue = new BigInteger( value.getValueString() ); + sb.append( bigValue.toString( 16 ) ); + } + else + sb.append( Long.toHexString( value.longValue() ) ); + return sb.toString(); } - return Long.toString( value.longValue() ); } - else if ( CVariableFormat.HEXADECIMAL.equals( format ) ) { - StringBuffer sb = new StringBuffer( "0x" ); //$NON-NLS-1$ - if ( isUnsigned() ) { - BigInteger bigValue = new BigInteger( value.getValueString() ); - sb.append( bigValue.toString( 16 ) ); - } - else - sb.append( Long.toHexString( value.longValue() ) ); - return sb.toString(); + catch( NumberFormatException e ) { } return null; }