From b897ff5aa832a8ec11fea71769f4cb4d644ffb0c Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Wed, 26 Apr 2017 07:48:34 +0100 Subject: [PATCH] encoding.c: Support calling peekc past the end of the buffer. This makes calling peekc easier. --- src/libespeak-ng/encoding.c | 2 ++ tests/encoding.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/libespeak-ng/encoding.c b/src/libespeak-ng/encoding.c index 43af80d4..a9f19d89 100644 --- a/src/libespeak-ng/encoding.c +++ b/src/libespeak-ng/encoding.c @@ -803,6 +803,8 @@ text_decoder_getc(espeak_ng_TEXT_DECODER *decoder) uint32_t text_decoder_peekc(espeak_ng_TEXT_DECODER *decoder) { + if (decoder->current == decoder->end) return 0; + const uint8_t *current = decoder->current; uint32_t c = decoder->get(decoder); decoder->current = current; diff --git a/tests/encoding.c b/tests/encoding.c index d43d1058..c8810629 100644 --- a/tests/encoding.c +++ b/tests/encoding.c @@ -866,6 +866,10 @@ test_peekc() assert(text_decoder_getc(decoder) == 'd'); assert(text_decoder_eof(decoder) == 1); + // Calling peekc past the end of the buffer. + assert(text_decoder_peekc(decoder) == '\0'); + assert(text_decoder_eof(decoder) == 1); + destroy_text_decoder(decoder); }