+2017-03-04 Bruno Haible <bruno@clisp.org>
+
+ tests: Avoid compiler warning about uses of null_ptr.
+ * tests/null-ptr.h: New file.
+ * tests/test-canonicalize.c: Include null-ptr.h.
+ (null_ptr): Remove function.
+ * tests/test-canonicalize-lgpl.c: Likewise.
+ * tests/test-memmem.c: Likewise.
+ * tests/test-ptsname_r.c: Likewise.
+ * modules/canonicalize-tests (Files): Add tests/null-ptr.h.
+ * modules/canonicalize-lgpl-tests: Likewise.
+ * modules/memmem-tests: Likewise.
+ * modules/ptsname_r-tests: Likewise.
+ Reported by Jim Meyering.
+
2017-03-03 Bruno Haible <bruno@clisp.org>
doc: Mention Mac OS X deficiencies regarding semaphores.
--- /dev/null
+/* Return a NULL pointer, without letting the compiler know it.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+
+/* Return NULL.
+ Usual compilers are not able to infer something about the return value. */
+static void *
+null_ptr (void)
+{
+ unsigned int x = rand ();
+ unsigned int y = x * x;
+ if (y & 2)
+ return (void *) -1;
+ else
+ return (void *) 0;
+}
+
+/* If you want to know why this always returns NULL, read
+ https://en.wikipedia.org/wiki/Quadratic_residue#Prime_power_modulus . */
#include "same-inode.h"
+#include "null-ptr.h"
#include "macros.h"
/* Compare two slave names.
&& SAME_INODE (statbuf1, statbuf2)));
}
-static char *
-null_ptr (void)
-{
- return NULL;
-}
-
static void
test_errors (int fd, const char *slave)
{