summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Contreras <felipe.contreras@gmail.com>2010-06-14 03:53:57 +0300
committerFelipe Contreras <felipe.contreras@gmail.com>2010-06-14 03:57:54 +0300
commit3c9e3d652305deb4e01bdde2f2c1b92a6a0c037e (patch)
tree4a8a7198ddfca21e3035687208fb019187cbe1e2
parente67966bd54b650f88e26b795fd5e0d513bd50d95 (diff)
cmd_node: cleanup buffer after parsing
Also, increse the size if needed. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
-rw-r--r--pn_cmd_node.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/pn_cmd_node.c b/pn_cmd_node.c
index 991d6c8..dcf3613 100644
--- a/pn_cmd_node.c
+++ b/pn_cmd_node.c
@@ -2,6 +2,7 @@
#include "pn_trans.h"
#include "pn_parser.h"
#include "pn_cmd.h"
+#include "pn_buffer.h"
#include <string.h>
@@ -121,6 +122,12 @@ parse_impl(struct pn_node *node,
if (cmd)
got_command(PN_CMD_NODE(node), cmd, length);
} while (more);
+
+ if (buffer->offset) {
+ size_t cur_len = buffer->len - buffer->offset;
+ pn_buffer_prepare(buffer, cur_len);
+ memmove(buffer->data, buffer->data + buffer->offset, cur_len);
+ }
}
/* GObject stuff */