util/multitable.lua
changeset 4901 05ea6c1ae393
parent 4895 36df30395c44
child 5776 bd0ff8ae98a8
--- a/util/multitable.lua	Sat May 19 21:57:40 2012 +0100
+++ b/util/multitable.lua	Tue May 22 14:31:19 2012 +0100
@@ -144,18 +144,19 @@
 			keys[depth] = key;
 		end
 		local value = stack[depth][key];
-		if depth == maxdepth then -- Result
-			local result = {}; -- Collect keys forming path to result
-			for i = 1, depth do
-				result[i] = keys[i];
+		if query[depth] == nil or key == query[depth] then
+			if depth == maxdepth then -- Result
+				local result = {}; -- Collect keys forming path to result
+				for i = 1, depth do
+					result[i] = keys[i];
+				end
+				result[depth+1] = value;
+				return unpack(result, 1, depth+1);
+			elseif type(value) == "table" then
+				t_insert(stack, value); -- Descend
 			end
-			return unpack(result, 1, depth);
-		else
-			if (query[depth] == nil or key == query[depth]) and type(value) == "table" then -- Descend
-				t_insert(stack, value);
-			end
-			return it(self);
 		end
+		return it(self);
 	end;
 	return it, self;
 end