aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-06-21 07:14:05 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-06-21 07:14:05 +0000
commit82727299777de8f218d3d8c258650d6c7d4098a4 (patch)
tree00a9284c840eecd2607006426875eb91f03ec9ba
parent9d291c82e5de04ce530f366b4eef039838c2ffa5 (diff)
downloadruby-82727299777de8f218d3d8c258650d6c7d4098a4.tar.gz
* string.c (rb_str_casemap): fix memory leak.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--string.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 92b2edc31a..28a684539a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Jun 21 16:13:45 2016 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_casemap): fix memory leak.
+
Tue Jun 21 16:12:21 2016 NARUSE, Yui <naruse@ruby-lang.org>
* string.c (rb_str_casemap): int is too small for string size.
diff --git a/string.c b/string.c
index 93d247f57e..a62ae2dd8d 100644
--- a/string.c
+++ b/string.c
@@ -5809,8 +5809,10 @@ rb_str_casemap(VALUE source, OnigCaseFoldType *flags, rb_encoding *enc)
}
/* fprintf(stderr, "Buffer count is %d\n", buffer_count); *//* for tuning */
- if (buffer_count==1)
+ if (buffer_count==1) {
target = rb_str_new_with_class(source, (const char*)current_buffer->space, target_length);
+ xfree(current_buffer);
+ }
else {
char *target_current = RSTRING_PTR(target = rb_str_new_with_class(source, 0, target_length));
mapping_buffer *previous_buffer;