From 9214f34e8d54b86c1764bda746de0a521e6d421f Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Thu, 5 Aug 2004 20:19:00 +0000 Subject: [PATCH] Restrict the "display as array" operation to the pointer types only. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 4 +++ .../debug/internal/core/model/CVariable.java | 36 +++++++++++++------ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index c3dcce54708..176ad066e7f 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2004-08-05 Mikhail Khodjaiants + Restrict the "display as array" operation to the pointer types only. + * CVariable.java + 2004-08-05 Mikhail Khodjaiants Warning cleanup. * CSharedLibraryManager.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java index d21d4790199..1959605ef03 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java @@ -493,11 +493,19 @@ public class CVariable extends AbstractCVariable implements ICDIEventListener { /* * (non-Javadoc) + * Allow this operation only for the pointer types (???). * * @see org.eclipse.cdt.debug.core.model.ICastToArray#canCastToArray() */ public boolean canCastToArray() { - return ( getOriginal() != null && isEnabled() ); + ICType type; + try { + type = getType(); + return ( getOriginal() != null && isEnabled() && type.isPointer() ); + } + catch( DebugException e ) { + } + return false; } /* @@ -506,11 +514,14 @@ public class CVariable extends AbstractCVariable implements ICDIEventListener { * @see org.eclipse.cdt.debug.core.model.ICastToArray#castToArray(int, int) */ public void castToArray( int startIndex, int length ) throws DebugException { - InternalVariable newVar = getOriginal().createShadow( startIndex, length ); - if ( getShadow() != null ) - getShadow().dispose(); - setShadow( newVar ); - fireChangeEvent( DebugEvent.STATE ); + InternalVariable current = getCurrentInternalVariable(); + if ( current != null ) { + InternalVariable newVar = current.createShadow( startIndex, length ); + if ( getShadow() != null ) + getShadow().dispose(); + setShadow( newVar ); + fireChangeEvent( DebugEvent.STATE ); + } } /* @@ -592,11 +603,14 @@ public class CVariable extends AbstractCVariable implements ICDIEventListener { * @see org.eclipse.cdt.debug.core.model.ICastToType#cast(java.lang.String) */ public void cast( String type ) throws DebugException { - InternalVariable newVar = getOriginal().createShadow( type ); - if ( getShadow() != null ) - getShadow().dispose(); - setShadow( newVar ); - fireChangeEvent( DebugEvent.STATE ); + InternalVariable current = getCurrentInternalVariable(); + if ( current != null ) { + InternalVariable newVar = current.createShadow( type ); + if ( getShadow() != null ) + getShadow().dispose(); + setShadow( newVar ); + fireChangeEvent( DebugEvent.STATE ); + } } /*