From 825ad381834c15ca0b98676ddec5904d2934100a Mon Sep 17 00:00:00 2001 From: Jack Stouffer Date: Tue, 23 May 2017 16:17:10 -0400 Subject: [PATCH] Removed auto-decoding from the single needle version of endsWith --- std/algorithm/searching.d | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 85fe4e2f5..5297fef8d 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1105,9 +1105,24 @@ bool endsWith(alias pred = "a == b", R, E)(R doesThisEnd, E withThis) if (isBidirectionalRange!R && is(typeof(binaryFun!pred(doesThisEnd.back, withThis)) : bool)) { - return doesThisEnd.empty - ? false - : binaryFun!pred(doesThisEnd.back, withThis); + if (doesThisEnd.empty) + return false; + + alias predFunc = binaryFun!pred; + + // auto-decoding special case + static if (isNarrowString!R) + { + // specialize for ASCII as to not change previous behavior + if (withThis <= 0x7F) + return predFunc(doesThisEnd[$ - 1], withThis); + else + return predFunc(doesThisEnd.back, withThis); + } + else + { + return predFunc(doesThisEnd.back, withThis); + } } /// Ditto