]> git.sur5r.net Git - openldap/commitdiff
Add error handling to BDB_INDEX code
authorKurt Zeilenga <kurt@openldap.org>
Wed, 3 Oct 2001 23:39:29 +0000 (23:39 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 3 Oct 2001 23:39:29 +0000 (23:39 +0000)
servers/slapd/back-bdb/modify.c

index d9fe477ccf00ecbcef01d1e9f4cb32f7ca5b0f99..f2e015cbf104011ff57ce8d0f62f67546148c24d 100644 (file)
@@ -130,13 +130,26 @@ int bdb_modify_internal(
 #if BDB_INDEX
        /* delete indices for old attributes */
        rc = bdb_index_entry_del( be, tid, e, save_attrs);
+       if ( rc != LDAP_SUCCESS ) {
+               attrs_free( e->e_attrs );
+               e->e_attrs = save_attrs;
+               Debug( LDAP_DEBUG_ANY, "entry index delete failed: %s\n",
+                       *text, 0, 0 );
+               return rc;
+       }
 
        /* add indices for new attributes */
-       rc = bdb_index_entry_add( be, tid, e, e->e_attrs);
+       rc = bdb_index_entry_add( be, tid, e, e->e_attrs); 
+       if ( rc != LDAP_SUCCESS ) {
+               attrs_free( e->e_attrs );
+               e->e_attrs = save_attrs;
+               Debug( LDAP_DEBUG_ANY, "entry index add failed: %s\n",
+                       *text, 0, 0 );
+               return rc;
+       }
 #endif
 
        attrs_free( save_attrs );
-
        return rc;
 }