forb_port_t *port = forb_malloc(sizeof(*port));
if (port) {
memset(port, 0, sizeof(*port));
- forb_unix_port_init(&port->desc, &forb->server_id);
- forb_register_port(forb, port);
+ ret = forb_unix_port_init(&port->desc, &forb->server_id);
+ if (ret) goto err_free_unix;
+ ret = forb_register_port(forb, port);
+ if (ret) goto err_free_unix; /* TODO: forb_unix_port_done() */
+ goto unix_ok;
}
+ err_free_unix:
+ free(port);
+ goto err2;
+ unix_ok:;
}
#endif
return orb;