bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

strtok_r: fix C syntax error in autoconf macro


From: Bruno Haible
Subject: strtok_r: fix C syntax error in autoconf macro
Date: Sat, 25 Dec 2010 10:51:22 +0100
User-agent: KMail/1.9.9

On OSF/1 5.1, the test "checking whether strtok_r works" succeeds with
cc but fails with gcc. Why? config.log shows these errors:

  configure:55854: checking whether strtok_r works
  configure:55894: gcc -std=gnu99 -o conftest -g -O2 -Wall -mieee  conftest.c  
>&5
  conftest.c: In function 'main':
  conftest.c:681: error: stray '\302' in program
  conftest.c:681: error: stray '\240' in program
  conftest.c:681: error: stray '\302' in program
  conftest.c:681: error: stray '\240' in program
  conftest.c:681: error: stray '\302' in program
  conftest.c:681: error: stray '\240' in program
  conftest.c:681: error: stray '\302' in program
  conftest.c:681: error: stray '\240' in program
  conftest.c:681: error: stray '\302' in program
  conftest.c:681: error: stray '\240' in program
  conftest.c:681: error: stray '\302' in program
  conftest.c:681: error: stray '\240' in program
  conftest.c:682: error: stray '\302' in program
  conftest.c:682: error: stray '\240' in program
  conftest.c:682: error: stray '\302' in program
  conftest.c:682: error: stray '\240' in program
  conftest.c:682: error: stray '\302' in program
  conftest.c:682: error: stray '\240' in program
  ...

The reason is that UTF-8 encoded non-breaking-space characters crept in
on 2009-09-06, in
<http://lists.gnu.org/archive/html/bug-gnulib/2009-09/msg00070.html>.
In an ISO-8859-1 locale, the patch looks like this:

+            [[char delimiters[] = "xxxxxxxx";
+              char *save_ptr = (char *) 0xd0d0;
+              strtok_r (delimiters, "x", &save_ptr);
+              strtok_r (NULL, "x", &save_ptr);
+              return 0;
+            ]])

It was my mistake, but I have no idea how this happened.


2010-12-25  Bruno Haible  <address@hidden>

        strtok_r: Fix C syntax error in autoconf macro.
        * m4/strtok_r.m4 (gl_FUNC_STRTOK_R): Don't use UTF-8 encoded U+00A0
        characters in test program.

--- m4/strtok_r.m4.orig Sat Dec 25 10:40:00 2010
+++ m4/strtok_r.m4      Sat Dec 25 10:39:43 2010
@@ -1,4 +1,4 @@
-# strtok_r.m4 serial 11
+# strtok_r.m4 serial 12
 dnl Copyright (C) 2002-2004, 2006-2007, 2009-2010 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
@@ -16,7 +16,7 @@ AC_DEFUN([gl_FUNC_STRTOK_R],
   if test $ac_cv_func_strtok_r = yes; then
     dnl glibc 2.7 has a bug in strtok_r that causes a segmentation fault
     dnl when the second argument to strtok_r is a constant string that has
-    dnl exactly one byte and compiling with optimization.  This bug is, for
+    dnl exactly one byte and compiling with optimization.  This bug is, for
     dnl example, present in the glibc 2.7-18 package in Debian "lenny".
     dnl See <http://sources.redhat.com/bugzilla/show_bug.cgi?id=5614>.
     AC_CACHE_CHECK([whether strtok_r works], [gl_cv_func_strtok_r_works],
@@ -32,10 +32,10 @@ AC_DEFUN([gl_FUNC_STRTOK_R],
             ]],
             [[static const char dummy[] = "\177\01a";
               char delimiters[] = "xxxxxxxx";
-              char *save_ptr = (char *) dummy;
-              strtok_r (delimiters, "x", &save_ptr);
-              strtok_r (NULL, "x", &save_ptr);
-              return 0;
+              char *save_ptr = (char *) dummy;
+              strtok_r (delimiters, "x", &save_ptr);
+              strtok_r (NULL, "x", &save_ptr);
+              return 0;
             ]])
          ],
          [gl_cv_func_strtok_r_works=yes],



reply via email to

[Prev in Thread] Current Thread [Next in Thread]