From b67ecc80df8502e10ddce0ceaeb7b5dfb5f8fba4 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 28 Jul 2010 20:52:16 +0000 Subject: * file.c (rb_file_s_basename): pass baselen to rmext. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ file.c | 9 +++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ee1d3a822..5fc42efee6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Thu Jul 29 05:52:15 2010 Nobuyoshi Nakada + + * file.c (rb_file_s_basename): pass baselen to rmext. + Thu Jul 29 02:38:09 2010 NARUSE, Yui * configure.in: not [freebsd] but [freebsd*] for AS_CASE. diff --git a/file.c b/file.c index 9c94e7f555..8ce1f8dfe3 100644 --- a/file.c +++ b/file.c @@ -3398,15 +3398,12 @@ rb_file_s_realdirpath(int argc, VALUE *argv, VALUE klass) } static size_t -rmext(const char *p, long l1, const char *e) +rmext(const char *p, long l0, long l1, const char *e) { - long l0, l2; + long l2; if (!e) return 0; - for (l0 = 0; l0 < l1; ++l0) { - if (p[l0] != '.') break; - } l2 = strlen(e); if (l2 == 2 && e[1] == '*') { unsigned char c = *e; @@ -3527,7 +3524,7 @@ rb_file_s_basename(int argc, VALUE *argv) p = ruby_find_basename(name, &f, &n); if (n >= 0) { - if (NIL_P(fext) || !(f = rmext(p, n, StringValueCStr(fext)))) { + if (NIL_P(fext) || !(f = rmext(p, f, n, StringValueCStr(fext)))) { f = n; } if (f == RSTRING_LEN(fname)) return rb_str_new_shared(fname); -- cgit v1.2.3