diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIExpressions.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIExpressions.java index 66d2a8951d6..7407a56be86 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIExpressions.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIExpressions.java @@ -869,16 +869,20 @@ public class MIExpressions extends AbstractDsfService implements IExpressions, I protected void handleSuccess() { IExpressionDMContext[] subExpressions = getData(); - if (startIndex >= subExpressions.length || startIndex + length > subExpressions.length) { + if (startIndex >= subExpressions.length) { rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, "Invalid range for evaluating sub expressions.", null)); //$NON-NLS-1$ rm.done(); return; } - IExpressionDMContext[] subRange = new IExpressionDMContext[length]; - for (int i=0; i subExpressions.length) { + realLength = subExpressions.length - startIndex; } + + IExpressionDMContext[] subRange = new IExpressionDMContext[realLength]; + System.arraycopy(subExpressions, startIndex, subRange, 0, realLength); + rm.setData(subRange); rm.done(); }