Make sure parmv is not an ArgList and parms always is
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1736048 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Closure.java b/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Closure.java
index b787103..34f70a0 100644
--- a/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Closure.java
+++ b/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Closure.java
@@ -167,14 +167,14 @@
{
if (null != values)
{
- parmv = values;
+ parmv = new ArrayList<>(values);
parms = new ArgList(parmv);
}
else if (null != parent)
{
// inherit parent closure parameters
- parms = parent.parms;
- parmv = parent.parmv;
+ parmv = parent.parmv != null ? new ArrayList<>(parent.parmv) : null;
+ parms = parmv != null ? new ArgList(parmv) : null;
}
else
{
@@ -182,7 +182,7 @@
Object args = session.get("args");
if (null != args && args instanceof List<?>)
{
- parmv = (List<Object>) args;
+ parmv = new ArrayList<>((List<Object>) args);
parms = new ArgList(parmv);
}
}