From 5b09d44944dbc16dc58dc306c61fc3b6b6bcb684 Mon Sep 17 00:00:00 2001 From: Ben Blank Date: Sat, 7 Feb 2015 21:29:12 -0800 Subject: [PATCH] flatten converted values *after* recursive conversion, not instead of --- .../scala/li/cil/oc/server/driver/Registry.scala | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/scala/li/cil/oc/server/driver/Registry.scala b/src/main/scala/li/cil/oc/server/driver/Registry.scala index 0533efca1..fbaa60666 100644 --- a/src/main/scala/li/cil/oc/server/driver/Registry.scala +++ b/src/main/scala/li/cil/oc/server/driver/Registry.scala @@ -146,11 +146,6 @@ private[oc] object Registry extends api.detail.DriverAPI { memo += arg -> null null } - else if (converted.size == 1 && converted.containsKey("oc:flatten")) { - val value = converted.get("oc:flatten") - memo += arg -> value // Update memoization map. - value - } else { // This is a little nasty but necessary because we need to keep the // 'converted' value up-to-date for any reference created to it in @@ -163,7 +158,14 @@ private[oc] object Registry extends api.detail.DriverAPI { memo += converted -> converted // Makes convertMap re-use the map. convertRecursively(converted, memo, force = true) memo -= converted - converted + if (converted.size == 1 && converted.containsKey("oc:flatten")) { + val value = converted.get("oc:flatten") + memo += arg -> value // Update memoization map. + value + } + else { + converted + } } } }