]> sourceware.org Git - newlib-cygwin.git/commitdiff
* regex/engine.c (step): Declare and define with `int ch' rather than
authorCorinna Vinschen <corinna@vinschen.de>
Thu, 4 Feb 2010 17:34:44 +0000 (17:34 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Thu, 4 Feb 2010 17:34:44 +0000 (17:34 +0000)
`wint_t ch' parameter.  Explain why.
(NONCHAR): Remove related Cygwin patch here, including wrong comment.

winsup/cygwin/ChangeLog
winsup/cygwin/regex/engine.c

index 12499e1b9dcbf9f08a69257b86d15661577e1430..0d28a5b97218dc9e1405a4e0daa4642f6e9c665d 100644 (file)
@@ -1,3 +1,9 @@
+2010-02-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * regex/engine.c (step): Declare and define with `int ch' rather than
+       `wint_t ch' parameter.  Explain why.
+       (NONCHAR): Remove related Cygwin patch here, including wrong comment.
+
 2010-02-04  Corinna Vinschen  <corinna@vinschen.de>
 
        Replace regex files with multibyte-aware version from FreeBSD.
index ca24cc50cd142c6a6e34d23d9aaee0703d38c02c..a517a67eeb90fe12789615765e1826cc21497770 100644 (file)
@@ -106,7 +106,11 @@ static const char *dissect(struct match *m, const char *start, const char *stop,
 static const char *backref(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, sopno lev, int);
 static const char *fast(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
 static const char *slow(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
+#ifdef __CYGWIN__
+static states step(struct re_guts *g, sopno start, sopno stop, states bef, int ch, states aft);
+#else
 static states step(struct re_guts *g, sopno start, sopno stop, states bef, wint_t ch, states aft);
+#endif
 #define MAX_RECURSION  100
 #define        BOL     (OUT-1)
 #define        EOL     (BOL-1)
@@ -115,13 +119,7 @@ static states step(struct re_guts *g, sopno start, sopno stop, states bef, wint_
 #define        BOW     (BOL-4)
 #define        EOW     (BOL-5)
 #define        BADCHAR (BOL-6)
-#ifdef __CYGWIN__
-/* In contrast to BSD, wint_t on Cygwin is unsigned.  This breaks this test,
-   unless the compared values are casted to signed. */
-#define        NONCHAR(c)      ((int)(c) <= (int)OUT)
-#else
 #define        NONCHAR(c)      ((c) <= OUT)
-#endif
 #ifdef REDEBUG
 static void print(struct match *m, const char *caption, states st, int ch, FILE *d);
 #endif
@@ -995,7 +993,14 @@ step(struct re_guts *g,
        sopno start,            /* start state within strip */
        sopno stop,             /* state after stop state within strip */
        states bef,             /* states reachable before */
+#ifdef __CYGWIN__
+       /* When using wint_t, which is defined as unsigned int on BSD,
+          as well as on Cygwin or Linux, the NONCHAR test is broken.
+          I'm wondering how this is supposed to work at all... */
+       int ch,                 /* character or NONCHAR code */
+#else
        wint_t ch,              /* character or NONCHAR code */
+#endif
        states aft)             /* states already known reachable after */
 {
        cset *cs;
This page took 0.035307 seconds and 5 git commands to generate.