memset( bsi->bsi_e, 0, sizeof( Entry ) );
 
        if ( bi->sql_baseObject && BACKSQL_IS_BASEOBJECT_ID( &eid->eid_id ) ) {
-               rc = entry_dup_to( bi->sql_baseObject, bsi->bsi_e );
-               if ( rc != LDAP_SUCCESS ) {
-                       return rc;
-               }
-                       
+               (void)entry_dup2( bsi->bsi_e, bi->sql_baseObject );
                goto done;
        }
 
 
        return 0;
 }
 
-int entry_dup_to( Entry *source, Entry *dest )
+Entry *
+entry_dup2( Entry *dest, Entry *source )
 {
+       assert( dest != NULL );
+       assert( source != NULL );
+
+       assert( dest->e_private == NULL );
+
        dest->e_id = source->e_id;
        ber_dupbv( &dest->e_name, &source->e_name );
        ber_dupbv( &dest->e_nname, &source->e_nname );
        dest->e_attrs = attrs_dup( source->e_attrs );
        dest->e_ocflags = source->e_ocflags;
-       return LDAP_SUCCESS;
+
+       return dest;
 }
 
-Entry *entry_dup( Entry *e )
+Entry *
+entry_dup( Entry *e )
 {
-       Entry *ret;
-
-       ret = entry_alloc();
-       entry_dup_to(e, ret);
-
-       return ret;
+       return entry_dup2( entry_alloc(), e );
 }
 
 #if 1
 
 LDAP_SLAPD_F (int) entry_dn_cmp LDAP_P(( const void *v_a, const void *v_b ));
 LDAP_SLAPD_F (int) entry_id_cmp LDAP_P(( const void *v_a, const void *v_b ));
 LDAP_SLAPD_F (Entry *) entry_dup LDAP_P(( Entry *e ));
-LDAP_SLAPD_F (int) entry_dup_to LDAP_P(( Entry *src, Entry *dest ));
+LDAP_SLAPD_F (Entry *) entry_dup2 LDAP_P(( Entry *dest, Entry *src ));
 LDAP_SLAPD_F (Entry *) entry_dup_bv LDAP_P(( Entry *e ));
 LDAP_SLAPD_F (Entry *) entry_alloc LDAP_P((void));
 LDAP_SLAPD_F (int) entry_prealloc LDAP_P((int num));