From ca96460a1e8405f9c2e875f5cae84f003c61fcc4 Mon Sep 17 00:00:00 2001 From: "H. S. Teoh" Date: Thu, 28 Aug 2014 16:49:24 -0700 Subject: [PATCH 1/2] Fix regression 13393. Caused by .save failing to save entire state, causing inconsistency in .save'd objects. --- std/algorithm.d | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/std/algorithm.d b/std/algorithm.d index b9e8f0da5fd..56b875d969b 100644 --- a/std/algorithm.d +++ b/std/algorithm.d @@ -13229,6 +13229,7 @@ auto cartesianProduct(RR...)(RR ranges) copy.ranges[i] = r.save; copy.current[i] = current[i].save; } + copy.empty = this.empty; return copy; } } @@ -13261,6 +13262,13 @@ unittest assert(cprod.init.empty); } +unittest +{ + // Issue 13393 + import std.string : format; + auto result = format("%s", [cartesianProduct([0],[0],[0])].joiner); +} + /// ditto auto cartesianProduct(R1, R2, RR...)(R1 range1, R2 range2, RR otherRanges) if (!allSatisfy!(isForwardRange, R1, R2, RR) || From 6e310878172555aa7b6599a3f2a7047c309621b8 Mon Sep 17 00:00:00 2001 From: "H. S. Teoh" Date: Thu, 28 Aug 2014 17:03:07 -0700 Subject: [PATCH 2/2] Simplify unittest. --- std/algorithm.d | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/std/algorithm.d b/std/algorithm.d index 56b875d969b..e20f823a937 100644 --- a/std/algorithm.d +++ b/std/algorithm.d @@ -13265,8 +13265,7 @@ unittest unittest { // Issue 13393 - import std.string : format; - auto result = format("%s", [cartesianProduct([0],[0],[0])].joiner); + assert(!cartesianProduct([0],[0],[0]).save.empty); } /// ditto