]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/attr.c
ITS#2895 store a copy in the entry cache
[openldap] / servers / slapd / attr.c
index f46be1f472e21eaabe485e47bca459f61ac7da3e..2a6b5f180e6a5b8bec29205d293cb2908fac3fda 100644 (file)
@@ -1,9 +1,28 @@
+/* attr.c - routines for dealing with attributes */
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2003 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* Portions Copyright (c) 1995 Regents of the University of Michigan.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that this notice is preserved and that due credit is given
+ * to the University of Michigan at Ann Arbor. The name of the University
+ * may not be used to endorse or promote products derived from this
+ * software without specific prior written permission. This software
+ * is provided ``as is'' without express or implied warranty.
  */
-/* attr.c - routines for dealing with attributes */
 
 #include "portable.h"
 
@@ -162,15 +181,17 @@ attr_merge_normalize(
        BerVarray       nvals = NULL;
        int             rc;
 
-       if ( desc->ad_type->sat_equality && desc->ad_type->sat_equality->smr_normalize ) {
+       if ( desc->ad_type->sat_equality &&
+               desc->ad_type->sat_equality->smr_normalize )
+       {
                int     i;
                
                for ( i = 0; vals[i].bv_val; i++ );
 
-               nvals = ch_calloc( sizeof(struct berval), i + 1 );
+               nvals = sl_calloc( sizeof(struct berval), i + 1, memctx );
                for ( i = 0; vals[i].bv_val; i++ ) {
                        rc = (*desc->ad_type->sat_equality->smr_normalize)(
-                                       0,
+                                       SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
                                        desc->ad_type->sat_syntax,
                                        desc->ad_type->sat_equality,
                                        &vals[i], &nvals[i], memctx );
@@ -187,7 +208,7 @@ attr_merge_normalize(
 
 error_return:;
        if ( nvals != NULL ) {
-               ber_bvarray_free( nvals );
+               ber_bvarray_free_x( nvals, memctx );
        }
        return rc;
 }
@@ -235,9 +256,11 @@ attr_merge_normalize_one(
        struct berval   *nvalp;
        int             rc;
 
-       if ( desc->ad_type->sat_equality && desc->ad_type->sat_equality->smr_normalize ) {
+       if ( desc->ad_type->sat_equality &&
+               desc->ad_type->sat_equality->smr_normalize )
+       {
                rc = (*desc->ad_type->sat_equality->smr_normalize)(
-                               0,
+                               SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
                                desc->ad_type->sat_syntax,
                                desc->ad_type->sat_equality,
                                val, &nval, memctx );
@@ -252,7 +275,7 @@ attr_merge_normalize_one(
 
        rc = attr_merge_one( e, desc, val, nvalp );
        if ( nvalp != NULL ) {
-               ch_free( nval.bv_val );
+               sl_free( nval.bv_val, memctx );
        }
        return rc;
 }