From 870c5a56a7a83e7d1733a9b853d1d7d416c604ee Mon Sep 17 00:00:00 2001 From: eutarass Date: Mon, 16 Jun 2008 22:47:55 +0000 Subject: [tcf] Bug 237378: TCF Reference implementation does not follow spec for Flow Control command F --- .../org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java | 2 +- .../org/eclipse/tm/internal/tcf/dsf/services/TCFDSFRegisters.java | 3 ++- .../src/org/eclipse/tm/tcf/core/AbstractChannel.java | 5 ++++- 3 files changed, 7 insertions(+), 3 deletions(-) (limited to 'plugins') diff --git a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java index 37a0d56af..e9b8cbc66 100644 --- a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java +++ b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFNodeRegister.java @@ -140,7 +140,7 @@ public class TCFNodeRegister extends TCFNode { byte[] temp = new byte[data.length + 1]; temp[0] = 0; // Extra byte to avoid sign extension by BigInteger if (ctx.isBigEndian()) { - System.arraycopy(value, 0, temp, 1, data.length); + System.arraycopy(data, 0, temp, 1, data.length); } else { for (int i = 0; i < data.length; i++) { diff --git a/plugins/org.eclipse.tm.tcf.dsf/src/org/eclipse/tm/internal/tcf/dsf/services/TCFDSFRegisters.java b/plugins/org.eclipse.tm.tcf.dsf/src/org/eclipse/tm/internal/tcf/dsf/services/TCFDSFRegisters.java index 76542cfc7..7987075cc 100644 --- a/plugins/org.eclipse.tm.tcf.dsf/src/org/eclipse/tm/internal/tcf/dsf/services/TCFDSFRegisters.java +++ b/plugins/org.eclipse.tm.tcf.dsf/src/org/eclipse/tm/internal/tcf/dsf/services/TCFDSFRegisters.java @@ -697,7 +697,8 @@ public class TCFDSFRegisters extends AbstractDsfService implements org.eclipse.d RegisterChildrenCache cache = null; if (dmc instanceof CompositeDMContext) { for (IDMContext ctx : dmc.getParents()) { - if (ctx instanceof TCFDSFExecutionDMC || ctx instanceof TCFDSFStack.TCFFrameDMC) { + if (ctx instanceof TCFDSFExecutionDMC || ctx instanceof TCFDSFStack.TCFFrameDMC || + ctx instanceof RegisterGroupDMC || ctx instanceof RegisterDMC) { dmc = ctx; break; } diff --git a/plugins/org.eclipse.tm.tcf/src/org/eclipse/tm/tcf/core/AbstractChannel.java b/plugins/org.eclipse.tm.tcf/src/org/eclipse/tm/tcf/core/AbstractChannel.java index fdc82faf4..4eeadb16d 100644 --- a/plugins/org.eclipse.tm.tcf/src/org/eclipse/tm/tcf/core/AbstractChannel.java +++ b/plugins/org.eclipse.tm.tcf/src/org/eclipse/tm/tcf/core/AbstractChannel.java @@ -763,7 +763,10 @@ public abstract class AbstractChannel implements IChannel { out_queue.add(0, msg); out_queue.notify(); } - msg.data = Integer.toString(local_congestion_level).getBytes("ASCII"); + StringBuilder buffer = new StringBuilder(); + buffer.append(local_congestion_level); + buffer.append((char)0); // 0 terminate + msg.data = buffer.toString().getBytes("ASCII"); msg.trace = trace_listeners; local_congestion_level = level; } -- cgit v1.2.3