summaryrefslogtreecommitdiff
path: root/src/treebuilder/generic_rcdata.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/treebuilder/generic_rcdata.c')
-rw-r--r--src/treebuilder/generic_rcdata.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/treebuilder/generic_rcdata.c b/src/treebuilder/generic_rcdata.c
index 0ab3b8c..e15cf97 100644
--- a/src/treebuilder/generic_rcdata.c
+++ b/src/treebuilder/generic_rcdata.c
@@ -35,20 +35,16 @@ bool handle_generic_rcdata(hubbub_treebuilder *treebuilder,
switch (token->type) {
case HUBBUB_TOKEN_CHARACTER:
- if (treebuilder->context.collect.string.len == 0) {
- treebuilder->context.collect.string.data.off =
- token->data.character.data.off;
- }
- treebuilder->context.collect.string.len +=
- token->data.character.len;
+ treebuilder->context.collect.string =
+ token->data.character;
if (treebuilder->context.strip_leading_lr) {
- const uint8_t *str = treebuilder->input_buffer +
- treebuilder->context.collect.string.data.off;
+ const uint8_t *str =
+ treebuilder->context.collect.string.ptr;
/** \todo UTF-16 */
if (*str == '\n') {
- treebuilder->context.collect.string.data.off++;
+ treebuilder->context.collect.string.ptr++;
treebuilder->context.collect.string.len--;
}
@@ -79,7 +75,7 @@ bool handle_generic_rcdata(hubbub_treebuilder *treebuilder,
break;
}
- if (done && treebuilder->context.collect.string.len) {
+ if (treebuilder->context.collect.string.len) {
int success;
void *text, *appended;
@@ -107,6 +103,7 @@ bool handle_generic_rcdata(hubbub_treebuilder *treebuilder,
treebuilder->tree_handler->unref_node(
treebuilder->tree_handler->ctx, text);
+ treebuilder->context.collect.string.len = 0;
}
if (done) {