1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-09 01:05:38 +02:00

Applied patch in bug 191583. Logic not taking into account blocks with addressable size > 1.

This commit is contained in:
John Cortell 2008-01-04 03:36:50 +00:00
parent bc7b6a3bd8
commit 2250bfc3d6

View file

@ -384,9 +384,11 @@ public class CMemoryBlockExtension extends CDebugElement implements IMemoryBlock
saveChanges( addresses ); saveChanges( addresses );
for ( int i = 0; i < addresses.length; ++i ) { for ( int i = 0; i < addresses.length; ++i ) {
fChanges.add( addresses[i] ); fChanges.add( addresses[i] );
if ( addresses[i].compareTo( start ) >= 0 && addresses[i].compareTo( start.add( BigInteger.valueOf( length ) ) ) < 0 ) { int addressableSize = fCDIBlock.getWordSize(); // # of bytes per address
int index = addresses[i].subtract( start ).intValue(); if ( addresses[i].compareTo( start ) >= 0 && addresses[i].compareTo( start.add( BigInteger.valueOf( length / addressableSize ) ) ) < 0 ) {
if ( index >= 0 && index < memBytes.length && index < newBytes.length ) { int index = addressableSize * addresses[i].subtract( start ).intValue();
int end = Math.min(Math.min(index + addressableSize, memBytes.length), newBytes.length);
for (index = Math.max(index, 0) ; index < end; index++ ) {
memBytes[index].setChanged( true ); memBytes[index].setChanged( true );
memBytes[index].setValue( newBytes[index] ); memBytes[index].setValue( newBytes[index] );
} }