Avoid ArrayIndexOutOfBoundsException which occurs at changing value of variable.
[phpeclipse.git] / net.sourceforge.phpeclipse.debug.core / src / net / sourceforge / phpdt / internal / debug / core / model / PHPVariable.java
index 94fd528..40519a2 100644 (file)
@@ -14,7 +14,10 @@ package net.sourceforge.phpdt.internal.debug.core.model;
 
 import java.util.Vector;
 
+import net.sourceforge.phpdt.internal.debug.core.PHPDebugCorePlugin;
+
 import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.ILaunch;
 import org.eclipse.debug.core.model.IDebugTarget;
@@ -62,7 +65,7 @@ public class PHPVariable implements IVariable {
         *
         * @param name
         */
-       private void setName (String name) {
+       public void setName (String name) {
                if ((fParent == null) ||                                                                        // If we have no parent for this variable
                    (fParent.getName () == "")) {                           //  or we have a parent which is just a simple node ???
                        fLongName = name;                                       // Set the long name
@@ -197,6 +200,20 @@ public class PHPVariable implements IVariable {
                else
                        evalString=fLongName+"="+expression;
                PHPVariable[] vars=fStackFrame.getPHPDBGProxy().eval(fStackFrame,evalString);
+
+               if (vars == null || vars.length == 0) {
+                       vars = fStackFrame.getPHPDBGProxy().eval(fStackFrame, fLongName);
+                       if (vars == null || vars.length == 0) {
+                               // TODO code and message
+                               int code = 0;
+                               String msg = "Could not assign and get variable";
+                               Status status = new Status(Status.ERROR,
+                                               PHPDebugCorePlugin.PLUGIN_ID, code, msg, null);
+                               PHPDebugCorePlugin.log(status);
+                               throw new DebugException(status);
+                       }
+               }
+
                setValue(vars[0].fValue);
        }