rem: c->expires = hooks.contact.expires;
context: int parse_contacts(str* _s, contact_t** _c){	contact_t* c;	param_hooks_t hooks;	while(1) {		     /* Allocate and clear contact stucture */		c = (contact_t*)pkg_malloc(sizeof(contact_t));		if (c == 0) {			LOG(L_ERR, "parse_contacts(): No memory left\n");			goto error;		}		memset(c, 0, sizeof(contact_t));				     /* Save beginning of URI */		c->uri.s = _s->s;				     /* Find the end of the URI */		if (skip_uri(_s) < 0) {			LOG(L_ERR, "parse_contacts(): Error while skipping URI\n");			goto error;		}				c->uri.len = _s->s - c->uri.s; /* Calculate URI length */		trim_trailing(&(c->uri));      /* Remove any trailing spaces from URI */		if (_s->len == 0) goto ok;				if (_s->s[0] == ';') {         /* Contact parameter found */			_s->s++;			_s->len--;			trim_leading(_s);						if (_s->len == 0) {				LOG(L_ERR, "parse_contacts(): Error while parsing params\n");				goto error;			}			if (parse_params(_s, CLASS_CONTACT, &hooks, &c->params) < 0) {				LOG(L_ERR, "parse_contacts(): Error while parsing parameters\n");				goto error;			}			c->q = hooks.contact.q;			c->expires = hooks.contact.expires;			c->expires = hooks.contact.expires;			c->method = hooks.contact.method;			if (_s->len == 0) goto ok;		}		     /* Next character is comma */		_s->s++;		_s->len--;		trim_leading(_s);		if (_s->len == 0) {			LOG(L_ERR, "parse_contacts(): Text after comma missing\n");			goto error;		}		c->next = *_c;		*_c = c;	} error:	if (c) pkg_free(c);	free_contacts(_c); /* Free any contacts created so far */	return -1; ok:	c->next = *_c;	*_c = c;	return 0;}