static Avlnode *attr_index = NULL;
static Avlnode *attr_cache = NULL;
-static LDAP_STAILQ_HEAD(ATList, slap_attribute_type) attr_list
+static LDAP_STAILQ_HEAD(ATList, AttributeType) attr_list
= LDAP_STAILQ_HEAD_INITIALIZER(attr_list);
/* Last hardcoded attribute registered */
{
at->sat_flags |= SLAP_AT_DELETED;
- LDAP_STAILQ_REMOVE(&attr_list,at,slap_attribute_type,sat_next);
+ LDAP_STAILQ_REMOVE(&attr_list, at, AttributeType, sat_next);
at_delete_names( at );
}
/* replacing a deleted definition? */
if ( old_sat->sat_flags & SLAP_AT_DELETED ) {
AttributeType tmp;
+ AttributeDescription *ad;
/* Keep old oid, free new oid;
* Keep old ads, free new ads;
tmp.sat_ad = sat->sat_ad;
*sat = tmp;
+ /* Check for basic ad pointing at old cname */
+ for ( ad = old_sat->sat_ad; ad; ad=ad->ad_next ) {
+ if ( ad->ad_cname.bv_val == sat->sat_cname.bv_val ) {
+ ad->ad_cname = old_sat->sat_cname;
+ break;
+ }
+ }
+
at_clean( sat );
at_destroy_one( air );