diff --git a/src/string.hh b/src/string.hh index 6fd2f5fb..00a20adc 100644 --- a/src/string.hh +++ b/src/string.hh @@ -330,12 +330,13 @@ String replace(StringView str, StringView substr, StringView replacement); template String join(const Container& container, char joiner, bool esc_joiner = true) { + const char to_escape[] = { joiner, '\\' }; String res; for (const auto& str : container) { if (not res.empty()) res += joiner; - res += esc_joiner ? escape(str, joiner, '\\') : str; + res += esc_joiner ? escape(str, to_escape, '\\') : str; } return res; } diff --git a/test/regression/1014-ambiguous-kak_selections/cmd b/test/regression/1014-ambiguous-kak_selections/cmd new file mode 100644 index 00000000..2783a13e --- /dev/null +++ b/test/regression/1014-ambiguous-kak_selections/cmd @@ -0,0 +1 @@ +%H diff --git a/test/regression/1014-ambiguous-kak_selections/in b/test/regression/1014-ambiguous-kak_selections/in new file mode 100644 index 00000000..819467ab --- /dev/null +++ b/test/regression/1014-ambiguous-kak_selections/in @@ -0,0 +1,3 @@ +foo\:bar +foo\\ +bar diff --git a/test/regression/1014-ambiguous-kak_selections/selections b/test/regression/1014-ambiguous-kak_selections/selections new file mode 100644 index 00000000..16016faf --- /dev/null +++ b/test/regression/1014-ambiguous-kak_selections/selections @@ -0,0 +1 @@ +foo\\\:bar:foo\\\\:bar