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; }