1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/pathname/pathname.c (path_sub_ext): don't clobber shared string.

[ruby-core:31640]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28896 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2010-08-07 04:59:27 +00:00
parent fd0485acf7
commit a438fce7e3
3 changed files with 11 additions and 2 deletions

View file

@ -1,3 +1,8 @@
Sat Aug 7 13:59:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/pathname/pathname.c (path_sub_ext): don't clobber shared string.
[ruby-core:31640]
Sat Aug 7 13:33:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm_eval.c (vm_call0): fix for VM_METHOD_TYPE_NOTIMPLEMENTED.

View file

@ -192,7 +192,7 @@ path_sub_ext(VALUE self, VALUE repl)
ext += extlen;
}
str2 = rb_str_dup(str);
rb_str_set_len(str2, ext-p);
rb_str_resize(str2, ext-p);
rb_str_append(str2, repl);
OBJ_INFECT(str2, str);
return rb_class_new_instance(1, &str2, rb_obj_class(self));

View file

@ -19,7 +19,10 @@ class TestPathname < Test::Unit::TestCase
def self.defassert(name, result, *args)
define_assertion(name) {
assert_equal(result, self.send(name, *args), "#{name}(#{args.map {|a| a.inspect }.join(', ')})")
mesg = "#{name}(#{args.map {|a| a.inspect }.join(', ')})"
assert_nothing_raised(mesg) {
assert_equal(result, self.send(name, *args), mesg)
}
}
end
@ -506,6 +509,7 @@ class TestPathname < Test::Unit::TestCase
defassert(:pathsubext, 'lex.yy.o', 'lex.yy.c', '.o')
defassert(:pathsubext, 'fooaa.o', 'fooaa', '.o')
defassert(:pathsubext, 'd.e/aa.o', 'd.e/aa', '.o')
defassert(:pathsubext, 'long_enough.bug-3664', 'long_enough.not_to_be_embeded[ruby-core:31640]', '.bug-3664')
def test_sub_matchdata
result = Pathname("abc.gif").sub(/\..*/) {