mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
encoding.c: Don't crash if NULL is passed as the string to the decode APIs.
This commit is contained in:
@@ -728,6 +728,22 @@ test_iso_10646_ucs_2_encoding()
|
||||
destroy_text_decoder(decoder);
|
||||
}
|
||||
|
||||
void
|
||||
test_char_decoder()
|
||||
{
|
||||
printf("testing char decoder\n");
|
||||
|
||||
espeak_ng_TEXT_DECODER *decoder = create_text_decoder();
|
||||
|
||||
// null string
|
||||
assert(text_decoder_decode_string(decoder, NULL, 5, ESPEAKNG_ENCODING_ISO_8859_1) == ENS_OK);
|
||||
assert(text_decoder_eof(decoder) == 1);
|
||||
assert(text_decoder_getc(decoder) == 0);
|
||||
assert(text_decoder_eof(decoder) == 1);
|
||||
|
||||
destroy_text_decoder(decoder);
|
||||
}
|
||||
|
||||
void
|
||||
test_wchar_decoder()
|
||||
{
|
||||
@@ -735,6 +751,12 @@ test_wchar_decoder()
|
||||
|
||||
espeak_ng_TEXT_DECODER *decoder = create_text_decoder();
|
||||
|
||||
// null string
|
||||
assert(text_decoder_decode_wstring(decoder, NULL, 5) == ENS_OK);
|
||||
assert(text_decoder_eof(decoder) == 1);
|
||||
assert(text_decoder_getc(decoder) == 0);
|
||||
assert(text_decoder_eof(decoder) == 1);
|
||||
|
||||
assert(text_decoder_decode_wstring(decoder, L"aG\xA0\x2045", 4) == ENS_OK);
|
||||
assert(text_decoder_eof(decoder) == 0);
|
||||
assert(text_decoder_getc(decoder) == 'a');
|
||||
@@ -756,6 +778,12 @@ test_auto_decoder()
|
||||
|
||||
espeak_ng_TEXT_DECODER *decoder = create_text_decoder();
|
||||
|
||||
// null string
|
||||
assert(text_decoder_decode_string_auto(decoder, NULL, 5, ESPEAKNG_ENCODING_ISO_8859_1) == ENS_OK);
|
||||
assert(text_decoder_eof(decoder) == 1);
|
||||
assert(text_decoder_getc(decoder) == 0);
|
||||
assert(text_decoder_eof(decoder) == 1);
|
||||
|
||||
// UTF-8
|
||||
assert(text_decoder_decode_string_auto(decoder, "aG\xC2\xA0 ", 5, ESPEAKNG_ENCODING_ISO_8859_1) == ENS_OK);
|
||||
assert(text_decoder_eof(decoder) == 0);
|
||||
@@ -813,6 +841,7 @@ main(int argc, char **argv)
|
||||
test_utf_8_encoding();
|
||||
test_iso_10646_ucs_2_encoding();
|
||||
|
||||
test_char_decoder();
|
||||
test_wchar_decoder();
|
||||
test_auto_decoder();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user