rc = (m->extrefs -= refs);
if (tableweak)
- rc += --m->weakrefs;
+ --m->weakrefs;
+ if (!last_unlock_releases)
+ rc += m->weakrefs;
LeaveCriticalSection(&m->lock);
TRACE("removed %u refs from %p (oid %s), rc is now %u\n", refs, m, wine_dbgstr_longlong(m->oid), rc);
- if (rc == 0 && last_unlock_releases)
+ if (rc == 0)
stub_manager_int_release(m);
return rc;
else if (ifstub->flags & MSHLFLAGS_TABLESTRONG)
refs = 1;
- stub_manager_ext_release(m, refs, tableweak, TRUE);
+ stub_manager_ext_release(m, refs, tableweak, FALSE);
}
/* is an ifstub table marshaled? */