rem: hdr_len += user.len; if (user.len) hdr_len += 1;
add: if (user.len) hdr_len += user.len + 1;
context: int record_route_preset(struct sip_msg* _m, char* _data, char* _s2){	str user;	struct to_body* from;	struct lump* l;	char* hdr, *p;	int hdr_len;	from = 0;	if (get_username(_m, &user) < 0) {		LOG(L_ERR, "record_route_preset(): Error while extracting username\n");		return -1;	}	if (append_fromtag) {		if (parse_from_header(_m) < 0) {			LOG(L_ERR, "record_route_preset(): From parsing failed\n");			return -2;		}		from = (struct to_body*)_m->from->parsed;	}		l = anchor_lump(_m, _m->headers->name.s - _m->buf, 0, 0);	if (!l) {		LOG(L_ERR, "record_route_preset(): Error while creating an anchor\n");		return -3;	}	hdr_len = RR_PREFIX_LEN;	hdr_len += user.len;	if (user.len) hdr_len += 1; /* @ */	hdr_len += ((str*)_data)->len;	if (append_fromtag && from->tag_value.len) {		hdr_len += RR_FROMTAG_LEN + from->tag_value.len;	}		if (enable_full_lr) {		hdr_len += RR_LR_FULL_TERM_LEN;	} else {		hdr_len += RR_LR_TERM_LEN;	}	hdr_len += 2; /* CRLF */	hdr = pkg_malloc(hdr_len);	if (!hdr) {		LOG(L_ERR, "record_route_preset(): No memory left\n");		return -4;	}	p = hdr;	memcpy(p, RR_PREFIX, RR_PREFIX_LEN);	p += RR_PREFIX_LEN;	if (user.len) {		memcpy(p, user.s, user.len);		p += user.len;		*p = '@';		p++;	}	memcpy(p, ((str*)_data)->s, ((str*)_data)->len);	p += ((str*)_data)->len;		if (append_fromtag && from->tag_value.len) {		memcpy(p, RR_FROMTAG, RR_FROMTAG_LEN);		p += RR_FROMTAG_LEN;		memcpy(p, from->tag_value.s, from->tag_value.len);		p += from->tag_value.len;	}	if (enable_full_lr) {		memcpy(p, RR_LR_FULL_TERM, RR_LR_FULL_TERM_LEN);		p += RR_LR_FULL_TERM_LEN;	} else {		memcpy(p, RR_LR_TERM, RR_LR_TERM_LEN);		p += RR_LR_TERM_LEN;	}	memcpy(p, CRLF, 2);	if (!insert_new_lump_after(l, hdr, hdr_len, 0)) {		LOG(L_ERR, "record_route_preset(): Error while inserting new lump\n");		pkg_free(hdr);		return -5;	}	return 1;}