mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
36044b0773
commit
5f13d888cf
5 changed files with 1 additions and 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
|
* string.c (rb_str_set_len): rb_str_modify cannot work before the
|
||||||
length is set, which is a precondition for rb_str_modify.
|
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>
|
Wed Aug 4 15:47:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
|
|
||||||
* lib/mkmf.rb (create_makefile): no need to create the directory
|
* lib/mkmf.rb (create_makefile): no need to create the directory
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
create_makefile("-test-/bug-3652/bug")
|
|
2
string.c
2
string.c
|
@ -1723,7 +1723,7 @@ rb_str_resize(VALUE str, long len)
|
||||||
else if (len <= RSTRING_EMBED_LEN_MAX) {
|
else if (len <= RSTRING_EMBED_LEN_MAX) {
|
||||||
char *ptr = RSTRING(str)->as.heap.ptr;
|
char *ptr = RSTRING(str)->as.heap.ptr;
|
||||||
STR_SET_EMBED(str);
|
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';
|
RSTRING(str)->as.ary[len] = '\0';
|
||||||
STR_SET_EMBED_LEN(str, len);
|
STR_SET_EMBED_LEN(str, len);
|
||||||
if (independent) xfree(ptr);
|
if (independent) xfree(ptr);
|
||||||
|
|
|
@ -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
|
|
Loading…
Add table
Reference in a new issue