Index: dir.c
===================================================================
RCS file: /cvs/ruby/src/ruby/dir.c,v
retrieving revision 1.92.2.9
diff -u -2 -p -r1.92.2.9 dir.c
--- dir.c	19 Aug 2004 07:48:50 -0000	1.92.2.9
+++ dir.c	19 Aug 2004 15:30:46 -0000
@@ -154,5 +154,5 @@ fnmatch(pat, string, flags)
 	    break;
 	case '*':
-	    while ((c = *pat++) == '*')
+	    while ((c = *++pat) == '*')
 		;
 
@@ -169,5 +169,5 @@ fnmatch(pat, string, flags)
 		s = rb_path_next(s);
 		if (*s) {
-                    s = CharNext(s);
+                    s++;
 		    break;
                 }
@@ -190,11 +190,12 @@ fnmatch(pat, string, flags)
 	    if (!*s || ISDIRSEP(*s) || PERIOD(s))
 		return FNM_NOMATCH;
-	    pat = range(pat, *s, flags);
+	    pat = range(pat + 1, *s, flags);
 	    if (pat == NULL)
 		return FNM_NOMATCH;
 	    s = CharNext(s);
-	    break;
+	    continue;
 
 	case '\\':
+	    pat++;
 	    if (escape
 #if defined DOSISH
@@ -221,4 +222,5 @@ fnmatch(pat, string, flags)
 	    break;
 	}
+	pat = CharNext(pat);
     }
     return !*s ? 0 : FNM_NOMATCH;
