bug-gnulib
[Top][All Lists]
Advanced

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

strtok_r on AIX 7.1BETA


From: Bruno Haible
Subject: strtok_r on AIX 7.1BETA
Date: Fri, 30 Jul 2010 21:37:47 +0200
User-agent: KMail/1.9.9

The logs show that the autoconf test for strtok_r fails in an unexpected way:

  checking whether strtok_r works... no

"conftest.c", line 745.2: 1506-766 (S) The universal character name "�" is not 
in the allowable range for an identifier.
"conftest.c", line 745.5: 1506-766 (S) The universal character name "�" is not 
in the allowable range for an identifier.
"conftest.c", line 745.8: 1506-766 (S) The universal character name "�" is not 
in the allowable range for an identifier.
"conftest.c", line 745.11: 1506-766 (S) The universal character name "�" is not 
in the allowable range for an identifier.
"conftest.c", line 745.14: 1506-766 (S) The universal character name "�" is not 
in the allowable range for an identifier.
"conftest.c", line 745.18: 1506-766 (S) The universal character name "�" is not 
in the allowable range for an identifier.
"conftest.c", line 745.5: 1506-277 (S) Syntax error: possible missing ';' or 
','?
"conftest.c", line 745.2: 1506-045 (S) Undeclared identifier \u00c2\u00a0.

The referenced line in the test program is this:

              char *save_ptr = (char *) 0xd0d0;

It looks like a compiler bug to me. I'm committing this tentative workaround:


2010-07-30  Bruno Haible  <address@hidden>

        strtok_r: Avoid triggering bug in AIX 7.1 xlc compiler.
        * m4/strtok_r.m4 (gl_FUNC_STRTOK_R): Don't cast an invalid address to
        a 'char *'.
        Reported by Rainer Tammer.

--- m4/strtok_r.m4.orig Fri Jul 30 21:23:04 2010
+++ m4/strtok_r.m4      Fri Jul 30 12:51:05 2010
@@ -1,4 +1,4 @@
-# strtok_r.m4 serial 10
+# strtok_r.m4 serial 11
 dnl Copyright (C) 2002-2004, 2006-2007, 2009-2010 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
@@ -30,8 +30,9 @@
               #include <stdlib.h>
               #include <string.h>
             ]],
-            [[char delimiters[] = "xxxxxxxx";
-              char *save_ptr = (char *) 0xd0d0;
+            [[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;



reply via email to

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