]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/collect.c
Fix corrupted CSN issue
[openldap] / servers / slapd / overlays / collect.c
index 680fb9b59f8309a55d00c46409eac3b39acccb89..f98040c5ebce1b7647dd4be125550eab2309bffc 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2003-2008 The OpenLDAP Foundation.
+ * Copyright 2003-2009 The OpenLDAP Foundation.
  * Portions Copyright 2003 Howard Chu.
  * All rights reserved.
  *
  * is no effect. If no attribute was configured, there is no effect.
  */
 
-/* Use C99 flexible array member if supported, C89 "struct hack" otherwise. */
-#define FLEXIBLE_STRUCT_SIZE(stype, mtype, mcount) \
-       (sizeof(stype) + sizeof(mtype) * ((mcount) - (0 FLEXIBLE_ARRAY_MEMBER)))
-#if __STDC_VERSION__>=199901L || (defined __GNUC__ && !defined __STRICT_ANSI__)
-#define FLEXIBLE_ARRAY_MEMBER
-#else
-#define FLEXIBLE_ARRAY_MEMBER +1
-#endif
-
 typedef struct collect_info {
        struct collect_info *ci_next;
        struct berval ci_dn;
        int ci_ad_num;
-       AttributeDescription *ci_ad[FLEXIBLE_ARRAY_MEMBER];
+       AttributeDescription *ci_ad[1];
 } collect_info;
 
 /*
@@ -184,8 +175,8 @@ collect_cf( ConfigArgs *c )
                }
 
                /* allocate config info with room for attribute array */
-               ci = ch_malloc( FLEXIBLE_STRUCT_SIZE( collect_info,
-                       AttributeDescription *, count + 1 ));
+               ci = ch_malloc( sizeof( collect_info ) +
+                       sizeof( AttributeDescription * ) * count );
 
                /* validate and normalize dn */
                ber_str2bv( c->argv[1], 0, 0, &bv );