From 0fe0be4e4bd18474a6e5c4936539f010e8190b86 Mon Sep 17 00:00:00 2001 From: lurchi Date: Mon, 5 Sep 2016 12:58:11 +0200 Subject: [PATCH] fix bug in partial list parsing (second try) --- src/parse.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/parse.c b/src/parse.c index 41f6a06..e0468ee 100644 --- a/src/parse.c +++ b/src/parse.c @@ -683,12 +683,14 @@ psyc_parse_list (PsycParseListState *state, PsycString *type, PsycString *elem) switch (parse_binary((ParseState*)state, state->elemlen, elem, &state->elem_parsed)) { case PARSE_SUCCESS: + state->part = PSYC_LIST_PART_ELEM_START; if (elem->length == state->elem_parsed) ret = PSYC_PARSE_LIST_ELEM; else ret = PSYC_PARSE_LIST_ELEM_END; break; case PARSE_INCOMPLETE: + state->part = PSYC_LIST_PART_ELEM; if (elem->length == state->elem_parsed) ret = PSYC_PARSE_LIST_ELEM_START; else @@ -700,6 +702,7 @@ psyc_parse_list (PsycParseListState *state, PsycString *type, PsycString *elem) } else { switch (parse_until((ParseState*)state, '|', elem)) { case PARSE_SUCCESS: + state->part = PSYC_LIST_PART_ELEM_START; ret = PSYC_PARSE_LIST_ELEM; break; case PARSE_INSUFFICIENT: @@ -710,7 +713,6 @@ psyc_parse_list (PsycParseListState *state, PsycString *type, PsycString *elem) } } - state->part = PSYC_LIST_PART_ELEM_START; state->startc = state->cursor; return ret; }