/* * Takes ownership of hd, will close in Dtor. */ int NaClDescMutexCtor(struct NaClDescMutex *self) { struct NaClDesc *basep = (struct NaClDesc *) self; basep->base.vtbl = (struct NaClRefCountVtbl const *) NULL; if (!NaClDescCtor(basep)) { return 0; } if (!NaClIntrMutexCtor(&self->mu)) { (*basep->base.vtbl->Dtor)(&basep->base); return 0; } basep->base.vtbl = (struct NaClRefCountVtbl const *) &kNaClDescMutexVtbl; return 1; }
/* * Takes ownership of hd, will close in Dtor. */ int NaClDescMutexCtor(struct NaClDescMutex *self) { struct NaClDesc *basep = (struct NaClDesc *) self; basep->vtbl = (struct NaClDescVtbl *) NULL; if (!NaClDescCtor(basep)) { return 0; } if (!NaClIntrMutexCtor(&self->mu)) { NaClDescDtor(basep); return 0; } basep->vtbl = &kNaClDescMutexVtbl; return 1; }