summaryrefslogtreecommitdiff
path: root/src/cobs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cobs.c')
-rw-r--r--src/cobs.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cobs.c b/src/cobs.c
index 84991f3..27bc24d 100644
--- a/src/cobs.c
+++ b/src/cobs.c
@@ -216,7 +216,7 @@ void cobs_decode_incremental_initialize(struct cobs_decode_state *state) {
int cobs_decode_incremental(struct cobs_decode_state *state, char *dst, size_t dstlen, char src) {
if (state->p == 0) {
if (src == 0)
- goto errout; /* invalid framing. An empty frame would be [...] 00 01 00, not [...] 00 00 */
+ goto empty_errout; /* invalid framing. An empty frame would be [...] 00 01 00, not [...] 00 00 */
state->c = (unsigned char)src;
state->p++;
return 0;
@@ -250,6 +250,10 @@ int cobs_decode_incremental(struct cobs_decode_state *state, char *dst, size_t d
errout:
cobs_decode_incremental_initialize(state);
return -1;
+
+empty_errout:
+ cobs_decode_incremental_initialize(state);
+ return -3;
}
#ifdef VALIDATION