http://git-wip-us.apache.org/repos/asf/vxquery/blob/b93e4584/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/ArrayNodeConstructorScalarEvaluator.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/ArrayNodeConstructorScalarEvaluator.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/ArrayNodeConstructorScalarEvaluator.java
index 924e2c0..05f4498 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/ArrayNodeConstructorScalarEvaluator.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/node/ArrayNodeConstructorScalarEvaluator.java
@@ -44,16 +44,20 @@ public class ArrayNodeConstructorScalarEvaluator extends 
AbstractNodeConstructor
             throws IOException, SystemException {
         ab.reset(mvs);
         TaggedValuePointable arg = args[0];
-        TaggedValuePointable tempTvp = 
ppool.takeOne(TaggedValuePointable.class);
         if (arg.getTag() == ValueTag.SEQUENCE_TAG) {
-            arg.getValue(sp);
-            for (int i = 0; i < sp.getEntryCount(); ++i) {
-                sp.getEntry(i, tempTvp);
-                ab.addItem(tempTvp);
+            TaggedValuePointable tempTvp = 
ppool.takeOne(TaggedValuePointable.class);
+            try {
+                arg.getValue(sp);
+                for (int i = 0; i < sp.getEntryCount(); ++i) {
+                    sp.getEntry(i, tempTvp);
+                    ab.addItem(tempTvp);
+                }
+            } finally {
+                ppool.giveBack(tempTvp);
             }
-            ppool.giveBack(tempTvp);
+        } else {
+            ab.addItem(arg);
         }
-
         ab.finish();
     }
 

Reply via email to