From 65032dd6b9097336195a93cae3b4f2c34d02693f Mon Sep 17 00:00:00 2001 From: beirtipol Date: Fri, 25 Oct 2019 10:19:00 +0100 Subject: [PATCH] ObjectReference arrays are not handled properly Originally referenced in https://github.com/poidasmith/xlloop/issues/34 but not picked up. Straightforward fix is to just check if it is an 'array' clazz rather than a primitive [][] --- .../src/org/boris/xlloop/util/XLoperObjectConverter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/org.boris.xlloop/java/src/org/boris/xlloop/util/XLoperObjectConverter.java b/org.boris.xlloop/java/src/org/boris/xlloop/util/XLoperObjectConverter.java index 06aa238..3b35800 100644 --- a/org.boris.xlloop/java/src/org/boris/xlloop/util/XLoperObjectConverter.java +++ b/org.boris.xlloop/java/src/org/boris/xlloop/util/XLoperObjectConverter.java @@ -515,7 +515,14 @@ private Object convertVector(XLArray arr, Class hint) { } val = darr; - } else { + } else if (clazz.isArray()) { + Class underlyingType = clazz.getComponentType(); + Object objectArray = Array.newInstance(underlyingType, xlArray.rows); + for (int i = 0; i < xlArray.rows; ++i) { + Array.set(objectArray, i, this.createFrom(xlArray.get(i), underlyingType)); + } + value = objectArray; + } else { String str = arr.getString(0); val = registry.get(str); }