summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2002-02-22 01:54:17 +0000
committerAndrew Bartlett <abartlet@samba.org>2002-02-22 01:54:17 +0000
commit2d80ab7122f34d3bf31cddd26a63929f9c2ced77 (patch)
tree68bf3b9bf08145e15c78e17568353e9b8fa6dd0a
parent505119f0a7c6f10fd7e580edfe1bd0fb6ec36428 (diff)
downloadsamba-2d80ab7122f34d3bf31cddd26a63929f9c2ced77.tar.gz
samba-2d80ab7122f34d3bf31cddd26a63929f9c2ced77.tar.xz
samba-2d80ab7122f34d3bf31cddd26a63929f9c2ced77.zip
Try to catch the compilers that don't handle immidiate structures as well as we
would like. We use them to initialise other struct (lookup) tables, so test that as well. Also try not to segfault during our snprintf tests - test both with a 0 len buffer and without any buffer at all. Andrew Bartlett
-rw-r--r--source/configure.in15
1 files changed, 13 insertions, 2 deletions
diff --git a/source/configure.in b/source/configure.in
index 6c2aae1872e..90bf8a67c5c 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -352,9 +352,15 @@ AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
AC_TRY_COMPILE([
#include <stdio.h>],
[
- #define X_FOOBAR(x) ((FOOBAR) { x })
typedef struct {unsigned x;} FOOBAR;
- FOOBAR f = X_FOOBAR(1);
+ #define X_FOOBAR(x) ((FOOBAR) { x })
+ #define FOO_ONE X_FOOBAR(1)
+ FOOBAR f = FOO_ONE;
+ static struct {
+ FOOBAR y;
+ } f2[] = {
+ {FOO_ONE}
+ };
],
samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
if test x"$samba_cv_immediate_structures" = x"yes"; then
@@ -990,6 +996,11 @@ void foo(const char *format, ...) {
char buf[5];
va_start(ap, format);
+ len = vsnprintf(buf, 0, format, ap);
+ va_end(ap);
+ if (len != 5) exit(1);
+
+ va_start(ap, format);
len = vsnprintf(0, 0, format, ap);
va_end(ap);
if (len != 5) exit(1);