diff --git a/src/include/espeak-ng/espeak_ng.h b/src/include/espeak-ng/espeak_ng.h index 149001ac..10e66f32 100644 --- a/src/include/espeak-ng/espeak_ng.h +++ b/src/include/espeak-ng/espeak_ng.h @@ -50,6 +50,7 @@ typedef enum { ENS_NOT_SUPPORTED = 0x10000AFF, ENS_UNSUPPORTED_PHON_FORMAT = 0x10000BFF, ENS_NO_SPECT_FRAMES = 0x10000CFF, + ENS_EMPTY_PHONEME_MANIFEST = 0x10000DFF, } espeak_ng_STATUS; typedef enum { diff --git a/src/libespeak-ng/compiledata.c b/src/libespeak-ng/compiledata.c index e8edb24b..1de8514e 100644 --- a/src/libespeak-ng/compiledata.c +++ b/src/libespeak-ng/compiledata.c @@ -409,6 +409,11 @@ static espeak_ng_STATUS ReadPhondataManifest(espeak_ng_ERROR_CONTEXT *context) free(manifest[ix].name); } + if (n_lines == 0) { + fclose(f); + return ENS_EMPTY_PHONEME_MANIFEST; + } + if ((manifest = (NAMETAB *)realloc(manifest, n_lines * sizeof(NAMETAB))) == NULL) { fclose(f); return ENOMEM; diff --git a/src/libespeak-ng/error.c b/src/libespeak-ng/error.c index 467cbac0..8a0dfae1 100644 --- a/src/libespeak-ng/error.c +++ b/src/libespeak-ng/error.c @@ -116,6 +116,9 @@ ESPEAK_NG_API void espeak_ng_GetStatusCodeMessage(espeak_ng_STATUS status, char case ENS_NO_SPECT_FRAMES: strncpy0(buffer, "The spectral file does not contain any frame data", length); break; + case ENS_EMPTY_PHONEME_MANIFEST: + strncpy0(buffer, "The phoneme manifest file does not contain any phonemes", length); + break; default: if ((status & ENS_GROUP_MASK) == ENS_GROUP_ERRNO) strerror_r(status, buffer, length);