diff options
Diffstat (limited to 'src/xplist.c')
| -rw-r--r-- | src/xplist.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/src/xplist.c b/src/xplist.c index 2eeccf9..c89b143 100644 --- a/src/xplist.c +++ b/src/xplist.c | |||
| @@ -290,12 +290,10 @@ static void node_to_xml(node_t* node, bytearray_t **outbuf, uint32_t depth) | |||
| 290 | tagOpen = TRUE; | 290 | tagOpen = TRUE; |
| 291 | str_buf_append(*outbuf, "\n", 1); | 291 | str_buf_append(*outbuf, "\n", 1); |
| 292 | if (node_data->length > 0) { | 292 | if (node_data->length > 0) { |
| 293 | char *buf = malloc(80); | ||
| 294 | uint32_t j = 0; | 293 | uint32_t j = 0; |
| 295 | uint32_t indent = (depth > 8) ? 8 : depth; | 294 | uint32_t indent = (depth > 8) ? 8 : depth; |
| 296 | uint32_t maxread = MAX_DATA_BYTES_PER_LINE(indent); | 295 | uint32_t maxread = MAX_DATA_BYTES_PER_LINE(indent); |
| 297 | size_t count = 0; | 296 | size_t count = 0; |
| 298 | size_t b64count = 0; | ||
| 299 | size_t amount = (node_data->length / 3 * 4) + 4 + (((node_data->length / maxread) + 1) * (indent+1)); | 297 | size_t amount = (node_data->length / 3 * 4) + 4 + (((node_data->length / maxread) + 1) * (indent+1)); |
| 300 | if ((*outbuf)->len + amount > (*outbuf)->capacity) { | 298 | if ((*outbuf)->len + amount > (*outbuf)->capacity) { |
| 301 | str_buf_grow(*outbuf, amount); | 299 | str_buf_grow(*outbuf, amount); |
| @@ -305,12 +303,11 @@ static void node_to_xml(node_t* node, bytearray_t **outbuf, uint32_t depth) | |||
| 305 | str_buf_append(*outbuf, "\t", 1); | 303 | str_buf_append(*outbuf, "\t", 1); |
| 306 | } | 304 | } |
| 307 | count = (node_data->length-j < maxread) ? node_data->length-j : maxread; | 305 | count = (node_data->length-j < maxread) ? node_data->length-j : maxread; |
| 308 | b64count = base64encode(buf, node_data->buff + j, count); | 306 | assert((*outbuf)->len + count < (*outbuf)->capacity); |
| 309 | str_buf_append(*outbuf, buf, b64count); | 307 | (*outbuf)->len += base64encode((char*)(*outbuf)->data + (*outbuf)->len, node_data->buff + j, count); |
| 310 | str_buf_append(*outbuf, "\n", 1); | 308 | str_buf_append(*outbuf, "\n", 1); |
| 311 | j+=count; | 309 | j+=count; |
| 312 | } | 310 | } |
| 313 | free(buf); | ||
| 314 | } | 311 | } |
| 315 | for (i = 0; i < depth; i++) { | 312 | for (i = 0; i < depth; i++) { |
| 316 | str_buf_append(*outbuf, "\t", 1); | 313 | str_buf_append(*outbuf, "\t", 1); |
