mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* file.c (rb_file_s_extname): first dot is not an extension name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c39e8c6e85
commit
34c96140f3
3 changed files with 17 additions and 2 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
Sat May 17 11:29:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* file.c (rb_file_s_extname): first dot is not an extension name.
|
||||||
|
|
||||||
Sat May 17 03:21:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
|
Sat May 17 03:21:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* array.c (rb_ary_sort_bang): stop memory leak. [ruby-dev:34726]
|
* array.c (rb_ary_sort_bang): stop memory leak. [ruby-dev:34726]
|
||||||
|
|
4
file.c
4
file.c
|
@ -3104,7 +3104,7 @@ rb_file_s_extname(VALUE klass, VALUE fname)
|
||||||
if (!p)
|
if (!p)
|
||||||
p = name;
|
p = name;
|
||||||
else
|
else
|
||||||
p++;
|
name = ++p;
|
||||||
|
|
||||||
e = 0;
|
e = 0;
|
||||||
while (*p) {
|
while (*p) {
|
||||||
|
@ -3134,7 +3134,7 @@ rb_file_s_extname(VALUE klass, VALUE fname)
|
||||||
break;
|
break;
|
||||||
p = CharNext(p);
|
p = CharNext(p);
|
||||||
}
|
}
|
||||||
if (!e || e+1 == p) /* no dot, or the only dot is first or end? */
|
if (!e || e == name || e+1 == p) /* no dot, or the only dot is first or end? */
|
||||||
return rb_str_new(0, 0);
|
return rb_str_new(0, 0);
|
||||||
extname = rb_str_new(e, p - e); /* keep the dot, too! */
|
extname = rb_str_new(e, p - e); /* keep the dot, too! */
|
||||||
rb_enc_copy(extname, fname);
|
rb_enc_copy(extname, fname);
|
||||||
|
|
|
@ -411,6 +411,17 @@ class TestFileExhaustive < Test::Unit::TestCase
|
||||||
def test_extname
|
def test_extname
|
||||||
assert(".test", File.extname(@file))
|
assert(".test", File.extname(@file))
|
||||||
assert_equal("", File.extname("foo"))
|
assert_equal("", File.extname("foo"))
|
||||||
|
assert_equal("", File.extname("/foo"))
|
||||||
|
assert_equal("", File.extname(".foo"))
|
||||||
|
assert_equal("", File.extname("/.foo"))
|
||||||
|
assert_equal("", File.extname("bar/.foo"))
|
||||||
|
assert_equal("", File.extname("/bar/.foo"))
|
||||||
|
assert_equal(".ext", File.extname("foo.ext"))
|
||||||
|
assert_equal(".ext", File.extname("/foo.ext"))
|
||||||
|
assert_equal(".ext", File.extname(".foo.ext"))
|
||||||
|
assert_equal(".ext", File.extname("/.foo.ext"))
|
||||||
|
assert_equal(".ext", File.extname("bar/.foo.ext"))
|
||||||
|
assert_equal(".ext", File.extname("/bar/.foo.ext"))
|
||||||
assert_equal("", File.extname(""))
|
assert_equal("", File.extname(""))
|
||||||
if /cygwin|mingw|mswin|bccwin/ =~ RUBY_PLATFORM
|
if /cygwin|mingw|mswin|bccwin/ =~ RUBY_PLATFORM
|
||||||
assert_equal("", File.extname("foo "))
|
assert_equal("", File.extname("foo "))
|
||||||
|
|
Loading…
Reference in a new issue