From 28bc307a3129aeebb2787621c2bca92931fcfac8 Mon Sep 17 00:00:00 2001 From: Markus Chmelar Date: Tue, 14 Nov 2017 10:46:43 +0100 Subject: [PATCH] Escape NULL terminator in strings with correct glyph --- Sources/Task.swift | 2 +- Tests/ReactiveTaskTests/StringExtensionSpec.swift | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Sources/Task.swift b/Sources/Task.swift index 10edd04..1409e94 100644 --- a/Sources/Task.swift +++ b/Sources/Task.swift @@ -54,7 +54,7 @@ extension String { in: self, range: NSRange(location: 0, length: self.utf16.count), withTemplate: "\\\\$0" - ) + ).replacingOccurrences(of: "\0", with: "␀") } } diff --git a/Tests/ReactiveTaskTests/StringExtensionSpec.swift b/Tests/ReactiveTaskTests/StringExtensionSpec.swift index 136700b..632ed31 100644 --- a/Tests/ReactiveTaskTests/StringExtensionSpec.swift +++ b/Tests/ReactiveTaskTests/StringExtensionSpec.swift @@ -10,6 +10,10 @@ class StringExtensionSpec: QuickSpec { expect("d\te\tf".escapingWhitespaces).to(equal("d\\\te\\\tf")) } + it("should escape the NULL terminator with the 'symbol for null' glyph (U+2400)") { + expect("abc\0".escapingWhitespaces).to(equal("abc␀")) + } + it("should not change the original string if it does not contain whitespaces") { expect("ReactiveTask").to(equal("ReactiveTask")) }