diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-08-04 11:08:28 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-08-04 11:08:28 +0000 |
commit | 5f13d888cf0aece7c1bb13b72773f66a4b9cebff (patch) | |
tree | 3f6f83022e0f7d352507d7691964d2d47d0bf3f3 | |
parent | 36044b07730033911580501cbe1a060e820e927e (diff) | |
download | ruby-5f13d888cf0aece7c1bb13b72773f66a4b9cebff.tar.gz |
* string.c (rb_str_resize): reverted r28851. rb_str_resize cannot
work before the length is set. [ruby-core:31615]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ext/-test-/bug-3652/bug.c | 16 | ||||
-rw-r--r-- | ext/-test-/bug-3652/extconf.rb | 1 | ||||
-rw-r--r-- | string.c | 2 | ||||
-rw-r--r-- | test/-ext-/test_bug-3652.rb | 12 |
5 files changed, 1 insertions, 35 deletions
@@ -3,11 +3,6 @@ Wed Aug 4 19:37:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> * string.c (rb_str_set_len): rb_str_modify cannot work before the length is set, which is a precondition for rb_str_modify. -Wed Aug 4 16:09:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> - - * string.c (rb_str_resize): should copy the content properly. a - patch from Jeremy Evans at [ruby-core:31615]. - Wed Aug 4 15:47:21 2010 NAKAMURA Usaku <usa@ruby-lang.org> * lib/mkmf.rb (create_makefile): no need to create the directory diff --git a/ext/-test-/bug-3652/bug.c b/ext/-test-/bug-3652/bug.c deleted file mode 100644 index 290ac2ddee..0000000000 --- a/ext/-test-/bug-3652/bug.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <ruby.h> - -static VALUE -bug_str_resize(VALUE self, VALUE init, VALUE repl) -{ - long initlen = NUM2LONG(init); - VALUE s = rb_str_buf_new(initlen); - return rb_str_resize(s, strlcpy(RSTRING_PTR(s), StringValueCStr(repl), (size_t)initlen)); -} - -void -Init_bug(void) -{ - VALUE mBug = rb_define_module("Bug"); - rb_define_module_function(mBug, "str_resize", bug_str_resize, 2); -} diff --git a/ext/-test-/bug-3652/extconf.rb b/ext/-test-/bug-3652/extconf.rb deleted file mode 100644 index 44f57b41c8..0000000000 --- a/ext/-test-/bug-3652/extconf.rb +++ /dev/null @@ -1 +0,0 @@ -create_makefile("-test-/bug-3652/bug") @@ -1723,7 +1723,7 @@ rb_str_resize(VALUE str, long len) else if (len <= RSTRING_EMBED_LEN_MAX) { char *ptr = RSTRING(str)->as.heap.ptr; STR_SET_EMBED(str); - if (len > 0) MEMCPY(RSTRING(str)->as.ary, ptr, char, len); + if (slen > 0) MEMCPY(RSTRING(str)->as.ary, ptr, char, slen); RSTRING(str)->as.ary[len] = '\0'; STR_SET_EMBED_LEN(str, len); if (independent) xfree(ptr); diff --git a/test/-ext-/test_bug-3652.rb b/test/-ext-/test_bug-3652.rb deleted file mode 100644 index 0e4d658081..0000000000 --- a/test/-ext-/test_bug-3652.rb +++ /dev/null @@ -1,12 +0,0 @@ -require 'test/unit' -require '-test-/bug-3652/bug' - -class Test_BUG_3652 < Test::Unit::TestCase - def test_block_call_id - bug3652 = '[ruby-core:31615]' - s = "123456789012345678901234" - assert_equal(s, Bug.str_resize(127, s), bug3652) - s = "123456789" - assert_equal(s, Bug.str_resize(127, s), bug3652) - end -end |