diff --git a/src/helma/scripting/rhino/MapWrapper.java b/src/helma/scripting/rhino/MapWrapper.java index a1bfbf31..681f1edc 100644 --- a/src/helma/scripting/rhino/MapWrapper.java +++ b/src/helma/scripting/rhino/MapWrapper.java @@ -20,6 +20,7 @@ import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.ScriptableObject; import org.mozilla.javascript.Wrapper; +import org.mozilla.javascript.Undefined; import java.util.HashMap; import java.util.Map; @@ -60,7 +61,9 @@ public class MapWrapper extends ScriptableObject { map = new HashMap(); } - if (value instanceof Wrapper) { + if (value == null || value == Undefined.instance) { + map.remove(name); + } else if (value instanceof Wrapper) { map.put(name, ((Wrapper) value).unwrap()); } else { map.put(name, value); @@ -131,7 +134,10 @@ public class MapWrapper extends ScriptableObject { if (map == null) { map = new HashMap(); } - if (value instanceof Wrapper) { + + if (value == null || value == Undefined.instance) { + map.remove(Integer.toString(idx)); + } else if (value instanceof Wrapper) { map.put(Integer.toString(idx), ((Wrapper) value).unwrap()); } else { map.put(Integer.toString(idx), value);