]> git.sur5r.net Git - openldap/commitdiff
Minor cleanup. bvarray_add should return success/fail, like
authorHoward Chu <hyc@openldap.org>
Wed, 2 Jan 2002 13:03:46 +0000 (13:03 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 2 Jan 2002 13:03:46 +0000 (13:03 +0000)
ber_bvecadd does.

servers/slapd/add.c
servers/slapd/charray.c
servers/slapd/proto-slap.h

index 047a61cbf7ab3c8b70ce0904fb612743941a1bad..358cfd97257b26e691c6147a19f2aa2352e5d652 100644 (file)
@@ -218,7 +218,7 @@ do_add( Connection *conn, Operation *op )
                send_ldap_result( conn, op, rc = LDAP_REFERRAL,
                        NULL, NULL, ref ? ref : default_referral, NULL );
 
-               bvarray_free( ref );
+               if ( ref ) bvarray_free( ref );
                goto done;
        }
 
@@ -309,7 +309,7 @@ do_add( Connection *conn, Operation *op )
                        send_ldap_result( conn, op, rc = LDAP_REFERRAL, NULL, NULL,
                                ref ? ref : defref, NULL );
 
-                       bvarray_free( ref );
+                       if ( ref ) bvarray_free( ref );
 #endif
                }
        } else {
index 4c61238b3a57572266102aad2b5914442b913f3b..c15c95ab6380e224bb4fb32d9a13f2dff914f266 100644 (file)
@@ -229,7 +229,11 @@ slap_strcopy(
        return a-1;
 }
 
-void
+/* Unlike charray_add, bvarray_add does not make a new copy of the
+ * source string. Typically it is used where ber_bvecadd was before,
+ * and ber_bvecadd didn't duplicate its source either.
+ */
+int
 bvarray_add(
     struct berval **a,
     struct berval *bv
@@ -248,10 +252,12 @@ bvarray_add(
                *a = (struct berval *) ch_realloc( (char *) *a,
                    (n + 2) * sizeof(struct berval) );
        }
+       if ( *a == NULL ) return -1;
 
-       ber_dupbv( (*a)+n, bv );
-       n++;
+       (*a)[n++] = *bv;
        (*a)[n].bv_val = NULL;
+
+       return 0;
 }
 
 void
index 8afd4c0bdcfa1a4dfc4fbba482c25492fbd28efe..ae0ff671011f795295017074d4ab581c8d393e29 100644 (file)
@@ -278,7 +278,7 @@ LDAP_SLAPD_F (char **) str2charray LDAP_P(( const char *str, const char *brkstr
 LDAP_SLAPD_F (int) charray_strcmp LDAP_P(( const char **a1, const char **a2 ));
 LDAP_SLAPD_F (int) charray_strcasecmp LDAP_P(( const char **a1, const char **a2 ));
 
-LDAP_SLAPD_F (void) bvarray_add LDAP_P(( BVarray *a, struct berval *bv ));
+LDAP_SLAPD_F (int) bvarray_add LDAP_P(( BVarray *a, struct berval *bv ));
 LDAP_SLAPD_F (void) bvarray_free LDAP_P(( struct berval *a ));
 
 LDAP_SLAPD_F (char *) slap_strcopy LDAP_P((