Affects versions: Release 1.3, Release 1.2
Fix versions: Release 1.5
HW/OS/SW indipendant - issue is part of java interface
Patch:Code and Test
clojure.string/replace uses javas replace function to do it's work, the replace function has the tricky habit of 'double evaluating' the replacement string (third argument). This means that every \ in the string (so i.e. "
") is evaluated by the java code behind replace.
Since this behavior isn't documented it can lead to confusing errors, for example (made up semi real world example to explain the issue):
This should replace all unix folder separators with windows separators, this crashes with a index out of bound exemption since java tries to evaluate "
" as a semi regexp.
The expected result would be:
the actual result is:
This should return an 'escaped' string, it does not since the 'double evaluation' of the return string results in \\\\ being reduced to