summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-26 02:37:51 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-26 02:37:51 +0000
commit622f3f14b6928ee4fe3afa96db0250eb9da32e7a (patch)
treed0499f6a89c3ef88c857143f786425ec4279bc1e /string.c
parent73b59166d214719531d7228996d6a322a1518922 (diff)
string.c: terminate when embedded
* string.c (str_make_independent_expand): terminate String when moved from heap to embedded. [Fix GH-821]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/string.c b/string.c
index c8707c62a6..ffe2e6233a 100644
--- a/string.c
+++ b/string.c
@@ -1593,6 +1593,7 @@ str_make_independent_expand(VALUE str, long expand)
ptr = RSTRING(str)->as.heap.ptr;
STR_SET_EMBED(str);
memcpy(RSTRING(str)->as.ary, ptr, len);
+ RSTRING(str)->as.ary[len] = '\0'; /* Ensure string is terminated */
STR_SET_EMBED_LEN(str, len);
return;
}