{
        int             i;
        Filter          *p;
+       AttributeDescription *ad;
        struct berval   atmp,
                        vtmp,
                        *tmp;
 
        switch ( f->f_choice ) {
        case LDAP_FILTER_EQUALITY:
-               if ( map_attr_value( dc, &f->f_av_desc, &atmp,
+               ad = f->f_av_desc;
+               if ( map_attr_value( dc, &ad, &atmp,
                                        &f->f_av_value, &vtmp, RWM_MAP ) )
                {
                        goto computed;
                break;
 
        case LDAP_FILTER_GE:
-               if ( map_attr_value( dc, &f->f_av_desc, &atmp,
+               ad = f->f_av_desc;
+               if ( map_attr_value( dc, &ad, &atmp,
                                        &f->f_av_value, &vtmp, RWM_MAP ) )
                {
                        goto computed;
                break;
 
        case LDAP_FILTER_LE:
-               if ( map_attr_value( dc, &f->f_av_desc, &atmp,
+               ad = f->f_av_desc;
+               if ( map_attr_value( dc, &ad, &atmp,
                                        &f->f_av_value, &vtmp, RWM_MAP ) )
                {
                        goto computed;
                break;
 
        case LDAP_FILTER_APPROX:
-               if ( map_attr_value( dc, &f->f_av_desc, &atmp,
+               ad = f->f_av_desc;
+               if ( map_attr_value( dc, &ad, &atmp,
                                        &f->f_av_value, &vtmp, RWM_MAP ) )
                {
                        goto computed;
                break;
 
        case LDAP_FILTER_SUBSTRINGS:
-               if ( map_attr_value( dc, &f->f_sub_desc, &atmp,
+               ad = f->f_sub_desc;
+               if ( map_attr_value( dc, &ad, &atmp,
                                        NULL, NULL, RWM_MAP ) )
                {
                        goto computed;
                break;
 
        case LDAP_FILTER_PRESENT:
-               if ( map_attr_value( dc, &f->f_desc, &atmp,
+               ad = f->f_desc;
+               if ( map_attr_value( dc, &ad, &atmp,
                                        NULL, NULL, RWM_MAP ) )
                {
                        goto computed;
 
        case LDAP_FILTER_EXT: {
                if ( f->f_mr_desc ) {
-                       if ( map_attr_value( dc, &f->f_mr_desc, &atmp,
+                       ad = f->f_mr_desc;
+                       if ( map_attr_value( dc, &ad, &atmp,
                                                &f->f_mr_value, &vtmp, RWM_MAP ) )
                        {
                                goto computed;