encoding.c: Don't crash if NULL is passed as the string to the decode APIs.

This commit is contained in:
Reece H. Dunn
2017-04-01 13:00:00 +01:00
parent ff01f81fbf
commit b5ed1f28a5
2 changed files with 41 additions and 6 deletions
+29
View File
@@ -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();