ruby-changes:8069
From: nobu <ko1@a...>
Date: Sat, 27 Sep 2008 03:59:29 +0900 (JST)
Subject: [ruby-changes:8069] Ruby:r19595 (trunk, ruby_1_8): * file.c (rmext): preceding dots are not a part of extension.
nobu 2008-09-27 03:57:23 +0900 (Sat, 27 Sep 2008) New Revision: 19595 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19595 Log: * file.c (rmext): preceding dots are not a part of extension. Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/file.c trunk/ChangeLog trunk/file.c Index: ChangeLog =================================================================== --- ChangeLog (revision 19594) +++ ChangeLog (revision 19595) @@ -1,3 +1,7 @@ +Sat Sep 27 03:57:19 2008 Nobuyoshi Nakada <nobu@r...> + + * file.c (rmext): preceding dots are not a part of extension. + Sat Sep 27 03:15:51 2008 Nobuyoshi Nakada <nobu@r...> * vm.c (vm_jump_tag_but_local_jump): exc is not used if val is nil. Index: file.c =================================================================== --- file.c (revision 19594) +++ file.c (revision 19595) @@ -2955,16 +2955,19 @@ static int rmext(const char *p, int l1, const char *e) { - int l2; + int l0, 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; e = p + l1; do { - if (e <= p) return 0; + if (e <= p + l0) return 0; } while (*--e != c); return e - p; } Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 19594) +++ ruby_1_8/ChangeLog (revision 19595) @@ -1,3 +1,7 @@ +Sat Sep 27 03:57:19 2008 Nobuyoshi Nakada <nobu@r...> + + * file.c (rmext): preceding dots are not a part of extension. + Sat Sep 27 03:12:40 2008 Nobuyoshi Nakada <nobu@r...> * ext/socket/socket.c (host_str): numeric address should be unsigned. Index: ruby_1_8/file.c =================================================================== --- ruby_1_8/file.c (revision 19594) +++ ruby_1_8/file.c (revision 19595) @@ -2828,16 +2828,19 @@ const char *p, *e; int l1; { - int l2; + int l0, 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; e = p + l1; do { - if (e <= p) return 0; + if (e <= p + l0) return 0; } while (*--e != c); return e - p; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/