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) {
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 );
{
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 ) {