aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/src
diff options
context:
space:
mode:
authorRory Byrne <[email protected]>2010-01-16 11:18:39 +0000
committerBjörn Gustavsson <[email protected]>2010-01-27 12:27:35 +0100
commit98cb178fe80be7ee560c16e02dc31bf3df7700c8 (patch)
treedf6db0aa87d742af449463c7eb8c76f6c14df168 /lib/stdlib/src
parentdf88b47cdafcc2e04452456942ea572a7b72e2f2 (diff)
downloadotp-98cb178fe80be7ee560c16e02dc31bf3df7700c8.tar.gz
otp-98cb178fe80be7ee560c16e02dc31bf3df7700c8.tar.bz2
otp-98cb178fe80be7ee560c16e02dc31bf3df7700c8.zip
Fix re:replace/4 to handle binary unicode output when nothing replaced
A bug with re:replace/4 causes an exception when: (a) it's given a unicode charlist as input; (b) it's set to {return,binary}; and (c) it finds nothing to replace. The problem is: when re:replace/4 does not find anything to replace in its Subject input, it calls iolist_to_binary on this data. This fails if the original input is a charlist with non-ascii codepoints.
Diffstat (limited to 'lib/stdlib/src')
-rw-r--r--lib/stdlib/src/re.erl7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/stdlib/src/re.erl b/lib/stdlib/src/re.erl
index 5417ac02e5..f934fdcba1 100644
--- a/lib/stdlib/src/re.erl
+++ b/lib/stdlib/src/re.erl
@@ -237,7 +237,12 @@ replace(Subject,RE,Replacement,Options) ->
iodata ->
IoList;
binary ->
- iolist_to_binary(IoList);
+ case Unicode of
+ false ->
+ iolist_to_binary(IoList);
+ true ->
+ unicode:characters_to_binary(IoList,unicode)
+ end;
list ->
case Unicode of
false ->