qmp_next doesn''t handle multiple lines read together in a single buffer
correctly at the moment.
This patch fixes it.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
tools/libxl/libxl_qmp.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c
index f77365b..41a12ad 100644
--- a/tools/libxl/libxl_qmp.c
+++ b/tools/libxl/libxl_qmp.c
@@ -412,17 +412,18 @@ do_select_again:
char *end = NULL;
if (incomplete) {
size_t current_pos = s - incomplete;
- incomplete_size += rd;
incomplete = libxl__realloc(gc, incomplete,
- incomplete_size + 1);
- incomplete = strncat(incomplete, qmp->buffer, rd);
+ incomplete_size + rd);
+ strncat(incomplete + incomplete_size, qmp->buffer, rd);
s = incomplete + current_pos;
+ incomplete_size += rd;
s_end = incomplete + incomplete_size;
} else {
incomplete = libxl__strndup(gc, qmp->buffer, rd);
incomplete_size = rd;
s = incomplete;
s_end = s + rd;
+ rd = 0;
}
end = strstr(s, "\r\n");
--
1.7.2.5