}
 
                } else {
-                       LDAPRequest *lrf = lr;
                        if ( lr->lr_outrefcnt <= 0 && lr->lr_parent == NULL ) {
                                /* request without any referrals */
                                simple_request = ( hadref ? 0 : 1 );
                        Debug( LDAP_DEBUG_TRACE,
                                "read1msg:  mark request completed, ld %p msgid %d\n",
                                (void *)ld, lr->lr_msgid, 0);
+                       tmplr = lr;
                        while ( lr->lr_parent != NULL ) {
                                merge_error_info( ld, lr->lr_parent, lr );
 
                        /* ITS#6744: Original lr was refcounted when we retrieved it,
                         * must release it now that we're working with the parent
                         */
-                       if ( lrf != &dummy_lr ) {
-                               ldap_return_request( ld, lrf, 0 );
+                       if ( tmplr->lr_parent ) {
+                               ldap_return_request( ld, tmplr, 0 );
                        }
 
                        /* Check if all requests are finished, lr is now parent */