summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--file.c9
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 <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): pass baselen to rmext.
+
Thu Jul 29 02:38:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
* 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);