Skip to content

Commit

Permalink
xml: Code refactoring
Browse files Browse the repository at this point in the history
Less code that works better (_a lot_ less reallocs). Win-win!
  • Loading branch information
liviuchircu committed Mar 23, 2017
1 parent ed58227 commit 9679501
Showing 1 changed file with 9 additions and 16 deletions.
25 changes: 9 additions & 16 deletions modules/xml/xml.c
Expand Up @@ -511,12 +511,10 @@ int pv_get_xml(struct sip_msg* msg, pv_param_t* pvp, pv_value_t* res)
LM_ERR("Unable to dump node to xml buffer\n");
goto err_free_xml_buf;
}
if (res_buf.len < xml_buf_len) {
res_buf.s = pkg_realloc(res_buf.s, xml_buf_len);
if (!res_buf.s) {
LM_ERR("No more pkg mem\n");
goto err_free_xml_buf;
}

if (pkg_str_resize(&res_buf, xml_buf_len) != 0) {
LM_ERR("No more pkg mem\n");
goto err_free_xml_buf;
}

xml_buf_s = (char *)xmlBufferContent(xml_buf);
Expand All @@ -525,12 +523,11 @@ int pv_get_xml(struct sip_msg* msg, pv_param_t* pvp, pv_value_t* res)
goto err_free_xml_buf;
}
memcpy(res_buf.s, xml_buf_s, xml_buf_len);
res_buf.len = xml_buf_len;

xmlBufferFree(xml_buf);

res->rs.s = res_buf.s;
res->rs.len = res_buf.len;
res->rs.len = xml_buf_len;

break;
case ACCESS_EL_VAL:
Expand All @@ -546,12 +543,9 @@ int pv_get_xml(struct sip_msg* msg, pv_param_t* pvp, pv_value_t* res)
}

xml_buf_len = xmlBufferLength(xml_buf);
if (res_buf.len < xml_buf_len) {
res_buf.s = pkg_realloc(res_buf.s, xml_buf_len);
if (!res_buf.s) {
LM_ERR("No more pkg mem\n");
goto err_free_xml_buf;
}
if (pkg_str_resize(&res_buf, xml_buf_len) != 0) {
LM_ERR("No more pkg mem\n");
goto err_free_xml_buf;
}

xml_buf_s = (char *)xmlBufferContent(xml_buf);
Expand All @@ -560,12 +554,11 @@ int pv_get_xml(struct sip_msg* msg, pv_param_t* pvp, pv_value_t* res)
goto err_free_xml_buf;
}
memcpy(res_buf.s, xml_buf_s, xml_buf_len);
res_buf.len = xml_buf_len;

xmlBufferFree(xml_buf);

res->rs.s = res_buf.s;
res->rs.len = res_buf.len;
res->rs.len = xml_buf_len;

break;
case ACCESS_EL_ATTR:
Expand Down

0 comments on commit 9679501

Please sign in to comment.