]> git.sur5r.net Git - openldap/commitdiff
more cleanup
authorPierangelo Masarati <ando@openldap.org>
Sat, 5 Jan 2002 18:31:38 +0000 (18:31 +0000)
committerPierangelo Masarati <ando@openldap.org>
Sat, 5 Jan 2002 18:31:38 +0000 (18:31 +0000)
servers/slapd/back-ldap/search.c

index df96f45f81c382fa6668baf14fe4eacdcd915d2e..def4edbbde7a7ee37f223bd4ff1e5d6b2ee79548 100644 (file)
@@ -149,7 +149,7 @@ ldap_back_search(
                                base->bv_val, conn, &mbase.bv_val ) ) {
        case REWRITE_REGEXEC_OK:
                if ( mbase.bv_val == NULL ) {
-                       mbase.bv_val = ( char * )base->bv_val;
+                       mbase = *base;
                }
 #ifdef NEW_LOGGING
                LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
@@ -185,7 +185,10 @@ ldap_back_search(
                                free( mfilter.bv_val );
                        }
                        mfilter = *filterstr;
+               } else {
+                       mfilter.bv_len = strlen( mfilter.bv_val );
                }
+
 #ifdef NEW_LOGGING
                LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
                                "[rw] searchFilter: \"%s\" -> \"%s\"\n",
@@ -223,6 +226,12 @@ ldap_back_search(
 #endif /* !ENABLE_REWRITE */
        }
 
+#ifdef ENABLE_REWRITE
+       if ( mfilter.bv_val != filterstr->bv_val ) {
+               ldap_memfree( mfilter.bv_val );
+       }
+#endif /* ENABLE_REWRITE */
+
        mapped_attrs = ldap_back_map_attrs(&li->at_map, attrs, 0);
        if ( mapped_attrs == NULL && attrs) {
                for (count=0; attrs[count].an_name.bv_val; count++);
@@ -341,19 +350,9 @@ finish:;
        if ( mapped_attrs ) {
                free( mapped_attrs );
        }
-#ifdef ENABLE_REWRITE
-       if ( mapped_filter != mfilter.bv_val ) {
-               free( mapped_filter );
-       }
-       if ( mfilter.bv_val != filterstr->bv_val ) {
-               free( mfilter.bv_val );
-       }
-#else /* !ENABLE_REWRITE */
        if ( mapped_filter != filterstr->bv_val ) {
                free( mapped_filter );
        }
-#endif /* !ENABLE_REWRITE */
-       
        if ( mbase.bv_val != base->bv_val ) {
                free( mbase.bv_val );
        }