From c923ecb2cc92806981d8f6f7b21977a52f7cac15 Mon Sep 17 00:00:00 2001 From: Kushal Munir < kmunir@ca.ibm.com> Date: Wed, 25 Oct 2006 03:29:12 +0000 Subject: [PATCH] Bug 160371: Kill the same process the second time results in ArrayIndexOutOfBoundsException and StringIndexOutOfBoundsException --- .../rse/services/dstore/processes/DStoreProcessService.java | 6 ++++++ .../rse/services/local/processes/LocalProcessService.java | 6 ++++++ .../rse/services/processes/AbstractProcessService.java | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/processes/DStoreProcessService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/processes/DStoreProcessService.java index 2af2fa7b5ac..55ad93ccf40 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/processes/DStoreProcessService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/processes/DStoreProcessService.java @@ -191,6 +191,12 @@ public class DStoreProcessService extends AbstractProcessService implements IPro // run kill command on host DStoreHostProcess process = (DStoreHostProcess) getProcess(monitor, PID); + + // if there is no process, simply return true + if (process == null) { + return true; + } + DataElement deObj = (DataElement) process.getObject(); DataElement killCmd = ds.localDescriptorQuery(deObj.getDescriptor(), C_PROCESS_KILL); deObj.setAttribute(DE.A_SOURCE, signal); diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/processes/LocalProcessService.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/processes/LocalProcessService.java index 4b80b7b0801..7806c1a88aa 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/processes/LocalProcessService.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/processes/LocalProcessService.java @@ -75,6 +75,12 @@ public class LocalProcessService extends AbstractProcessService implements ILoca try { process = getProcess(monitor, PID); + + // if there is no process, simply return true + if (process == null) { + return true; + } + handler.kill(process, signal); return true; } diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/processes/AbstractProcessService.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/processes/AbstractProcessService.java index 48d436bb452..0095ca8ac91 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/processes/AbstractProcessService.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/processes/AbstractProcessService.java @@ -83,7 +83,7 @@ public abstract class AbstractProcessService implements IProcessService rpfs.setPid(pidString); IHostProcess[] results = listAllProcesses(monitor, rpfs); - if (results == null) return null; + if ((results == null) || (results.length == 0)) return null; else return results[0]; }