From 2c446ecba3b89e81785398f601e2ed752b0c3599 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Mon, 4 Jan 2016 14:01:02 +0000 Subject: [PATCH] Properly clean up the open files in CompilePhonemeData2. --- src/libespeak-ng/compiledata.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/libespeak-ng/compiledata.c b/src/libespeak-ng/compiledata.c index cbec5ce3..623abb0c 100644 --- a/src/libespeak-ng/compiledata.c +++ b/src/libespeak-ng/compiledata.c @@ -616,7 +616,6 @@ static void CompileReport(void) free(list); list = NULL; - fclose(f_report); } static void error(const char *format, ...) @@ -2660,7 +2659,11 @@ static espeak_ng_STATUS CompilePhonemeData2(const char *source, FILE *log, espea sprintf(fname, "%s/../phsource/%s", path_home, "compile_report"); f_report = fopen_log(f_errors, fname, "w"); - + if (f_report == NULL) { + int error = errno; + fclose(f_in); + return create_file_error_context(context, error, fname); + } sprintf(fname, "%s/%s", path_home, "phondata-manifest"); if ((f_phcontents = fopen_log(f_phcontents, fname, "w")) == NULL) @@ -2686,6 +2689,8 @@ static espeak_ng_STATUS CompilePhonemeData2(const char *source, FILE *log, espea if (f_phdata == NULL) { int error = errno; fclose(f_in); + fclose(f_report); + fclose(f_phcontents); return create_file_error_context(context, errno, fname); } @@ -2694,6 +2699,8 @@ static espeak_ng_STATUS CompilePhonemeData2(const char *source, FILE *log, espea if (f_phindex == NULL) { int error = errno; fclose(f_in); + fclose(f_report); + fclose(f_phcontents); fclose(f_phdata); return create_file_error_context(context, errno, fname); } @@ -2703,6 +2710,8 @@ static espeak_ng_STATUS CompilePhonemeData2(const char *source, FILE *log, espea if (f_phtab == NULL) { int error = errno; fclose(f_in); + fclose(f_report); + fclose(f_phcontents); fclose(f_phdata); fclose(f_phindex); return create_file_error_context(context, errno, fname); @@ -2729,18 +2738,21 @@ static espeak_ng_STATUS CompilePhonemeData2(const char *source, FILE *log, espea WritePhonemeTables(); fprintf(f_errors, "\nRefs %d, Reused %d\n", count_references, duplicate_references); + fclose(f_in); + fclose(f_phcontents); fclose(f_phdata); - if (f_prog_log != NULL) - fclose(f_prog_log); fclose(f_phindex); fclose(f_phtab); - fclose(f_phcontents); + if (f_prog_log != NULL) + fclose(f_prog_log); LoadPhData(NULL, NULL); CompileReport(); + fclose(f_report); + if (resample_count > 0) { fprintf(f_errors, "\n%d WAV files resampled to %d Hz\n", resample_count, samplerate_native); fprintf(log, "Compiled phonemes: %d errors, %d files resampled to %d Hz.\n", error_count, resample_count, samplerate_native);