Try to catch the compilers that don't handle immidiate structures as well as we
authorAndrew Bartlett <abartlet@samba.org>
Fri, 22 Feb 2002 01:54:17 +0000 (01:54 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 22 Feb 2002 01:54:17 +0000 (01:54 +0000)
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
(This used to be commit 2d80ab7122f34d3bf31cddd26a63929f9c2ced77)

source3/configure.in

index 6c2aae1872efe5b08a28e1fa02958de47d47eda5..90bf8a67c5c2609f10950e01b13977add6faec25 100644 (file)
@@ -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
@@ -989,6 +995,11 @@ void foo(const char *format, ...) {
        int len;
        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);