NULL, NULL, 0 );
                        if ( rs->sr_matched && rs->sr_matched[ 0 ] == '\0' ) {
                                free( (char *)rs->sr_matched );
+                               rs->sr_matched = NULL;
                        }
                        if ( rs->sr_text && rs->sr_text[ 0 ] == '\0' ) {
                                free( (char *)rs->sr_text );
+                               rs->sr_text = NULL;
                        }
                        if ( rc == LDAP_SUCCESS ) {
                                if ( rs->sr_err == LDAP_SUCCESS ) {
        /* these have to be freed anyway... */
        if ( rs->sr_matched ) {
                free( (char *)rs->sr_matched );
+               rs->sr_matched = NULL;
        }
        if ( rs->sr_text ) {
                free( (char *)rs->sr_text );
+               rs->sr_text = NULL;
        }
-       rs->sr_matched = NULL;
-       rs->sr_text = NULL;
 
        if ( lc != NULL ) {
                ldap_back_release_conn( op, rs, lc );