summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--m4/strtoimax.m439
2 files changed, 35 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index ea441d10cd..f1b744b0af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2012-01-05 Bruno Haible <bruno@clisp.org>
+ strtoimax: Don't force a replacement on systems where intmax_t is int.
+ * m4/strtoimax.m4 (gl_FUNC_STRTOIMAX): Use a different test if
+ 'intmax_t' is not larger than 'int'.
+ Reported by Pádraig Brady <P@draigBrady.com>.
+
+2012-01-05 Bruno Haible <bruno@clisp.org>
+
doc: Mention NetBSD bugs.
* doc/posix-functions/*printf.texi: Mention a NetBSD 5.1 bug.
* doc/posix-functions/nl_langinfo.texi: Mention another NetBSD 5.1 bug.
diff --git a/m4/strtoimax.m4 b/m4/strtoimax.m4
index b4e2d4098e..76d55600d8 100644
--- a/m4/strtoimax.m4
+++ b/m4/strtoimax.m4
@@ -36,17 +36,34 @@ AC_DEFUN([gl_FUNC_STRTOIMAX],
#endif
int main ()
{
- const char *s = "4294967295";
- char *p;
- intmax_t res;
- errno = 0;
- res = strtoimax (s, &p, 10);
- if (p != s + strlen (s))
- return 1;
- if (errno != 0)
- return 2;
- if (res != (intmax_t) 65535 * (intmax_t) 65537)
- return 3;
+ if (sizeof (intmax_t) > sizeof (int))
+ {
+ const char *s = "4294967295";
+ char *p;
+ intmax_t res;
+ errno = 0;
+ res = strtoimax (s, &p, 10);
+ if (p != s + strlen (s))
+ return 1;
+ if (errno != 0)
+ return 2;
+ if (res != (intmax_t) 65535 * (intmax_t) 65537)
+ return 3;
+ }
+ else
+ {
+ const char *s = "2147483647";
+ char *p;
+ intmax_t res;
+ errno = 0;
+ res = strtoimax (s, &p, 10);
+ if (p != s + strlen (s))
+ return 1;
+ if (errno != 0)
+ return 2;
+ if (res != 2147483647)
+ return 3;
+ }
return 0;
}
]])],