]> git.sur5r.net Git - openldap/commitdiff
ldap_modify: delete of last attribute value should delete attribute (ITS#229) OPENLDAP_DEVEL_REFERRALS
authorKurt Zeilenga <kurt@openldap.org>
Sat, 17 Jul 1999 23:06:53 +0000 (23:06 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Sat, 17 Jul 1999 23:06:53 +0000 (23:06 +0000)
servers/slapd/back-bdb2/modify.c
servers/slapd/back-ldbm/modify.c

index 6dee5eeace02004e38859c6d19b59ad914ebecf3..ab38573dc246cf39fa65e1afe6e29b7ecc6e5d5b 100644 (file)
@@ -355,6 +355,17 @@ bdb2i_delete_values(
                                a->a_vals[k - 1] = a->a_vals[k];
                        }
                        a->a_vals[k - 1] = NULL;
+
+                       /* delete the entire attribute, if no values remain */
+                       if ( a->a_vals[0] == NULL) {
+                               Debug( LDAP_DEBUG_ARGS,
+                                       "removing entire attribute %s\n",
+                                       mod->mod_type, 0, 0 );
+                               if ( attr_delete( &e->e_attrs, mod->mod_type ) ) {
+                                       return LDAP_NO_SUCH_ATTRIBUTE;
+                               }
+                       }
+
                        break;
                }
 
index d9e9b8ed4c9b2e7935f8d47d037c9e886690ab0a..b5fc2c19a91b719cd2123f2b2f8dbc38cc6aa66b 100644 (file)
@@ -367,6 +367,17 @@ delete_values(
                                a->a_vals[k - 1] = a->a_vals[k];
                        }
                        a->a_vals[k - 1] = NULL;
+
+                       /* delete the entire attribute, if no values remain */
+                       if ( a->a_vals[0] == NULL) {
+                               Debug( LDAP_DEBUG_ARGS,
+                                       "removing entire attribute %s\n",
+                                       mod->mod_type, 0, 0 );
+                               if ( attr_delete( &e->e_attrs, mod->mod_type ) ) {
+                                       return LDAP_NO_SUCH_ATTRIBUTE;
+                               }
+                       }
+
                        break;
                }