]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/syncprov.c
ITS#8039 more cleanup
[openldap] / servers / slapd / overlays / syncprov.c
index 91b1899fd5a1752c2fc1805bd1cf259f61682ffc..3309e68fa108f47190b4ffeaeabbf07a4dcdd23c 100644 (file)
@@ -771,6 +771,7 @@ again:
 static void free_resinfo( syncres *sr )
 {
        syncres **st;
+       int freeit = 0;
        ldap_pvt_thread_mutex_lock( &sr->s_info->ri_mutex );
        for (st = &sr->s_info->ri_list; *st; st = &(*st)->s_rilist) {
                if (*st == sr) {
@@ -778,8 +779,10 @@ static void free_resinfo( syncres *sr )
                        break;
                }
        }
+       if ( !sr->s_info->ri_list )
+               freeit = 1;
        ldap_pvt_thread_mutex_unlock( &sr->s_info->ri_mutex );
-       if ( !sr->s_info->ri_list ) {
+       if ( freeit ) {
                ldap_pvt_thread_mutex_destroy( &sr->s_info->ri_mutex );
                if ( sr->s_info->ri_e )
                        entry_free( sr->s_info->ri_e );
@@ -1144,7 +1147,7 @@ syncprov_op_abandon( Operation *op, SlapReply *rs )
 {
        slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;
        syncprov_info_t         *si = on->on_bi.bi_private;
-       syncops *so = NULL, **sop;
+       syncops *so, **sop;
 
        ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
        for ( sop=&si->si_ops; (so = *sop); sop = &(*sop)->s_next ) {