int NaClDescXferableDataDescCtor(struct NaClDescXferableDataDesc *self, NaClHandle h) { int retval; retval = NaClDescImcConnectedDescCtor(&self->base, h); if (!retval) { return 0; } self->base.base.base.vtbl = (struct NaClRefCountVtbl const *) &kNaClDescXferableDataDescVtbl; return retval; }
int NaClDescImcDescCtor(struct NaClDescImcDesc *self, NaClHandle h) { int retval; retval = NaClDescImcConnectedDescCtor(&self->base, h); if (!retval) { return 0; } if (!NaClMutexCtor(&self->sendmsg_mu)) { NaClDescUnref((struct NaClDesc *) self); return 0; } if (!NaClMutexCtor(&self->recvmsg_mu)) { NaClMutexDtor(&self->sendmsg_mu); NaClDescUnref((struct NaClDesc *) self); return 0; } self->base.base.base.vtbl = (struct NaClRefCountVtbl const *) &kNaClDescImcDescVtbl; return retval; }