]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
common : fix file-handle leak in read_wav() (#2026)
authorulatekh <redacted>
Tue, 9 Apr 2024 15:34:34 +0000 (08:34 -0700)
committerGitHub <redacted>
Tue, 9 Apr 2024 15:34:34 +0000 (18:34 +0300)
Now it cleans up in case of error.

examples/common.cpp

index fad9a7c20096fd18685a26b4a6c00150abac852c..2c0cdf082ed1126ccc808a9592e9caff067ddb27 100644 (file)
@@ -676,21 +676,25 @@ bool read_wav(const std::string & fname, std::vector<float>& pcmf32, std::vector
 
     if (wav.channels != 1 && wav.channels != 2) {
         fprintf(stderr, "%s: WAV file '%s' must be mono or stereo\n", __func__, fname.c_str());
+        drwav_uninit(&wav);
         return false;
     }
 
     if (stereo && wav.channels != 2) {
         fprintf(stderr, "%s: WAV file '%s' must be stereo for diarization\n", __func__, fname.c_str());
+        drwav_uninit(&wav);
         return false;
     }
 
     if (wav.sampleRate != COMMON_SAMPLE_RATE) {
         fprintf(stderr, "%s: WAV file '%s' must be %i kHz\n", __func__, fname.c_str(), COMMON_SAMPLE_RATE/1000);
+        drwav_uninit(&wav);
         return false;
     }
 
     if (wav.bitsPerSample != 16) {
         fprintf(stderr, "%s: WAV file '%s' must be 16-bit\n", __func__, fname.c_str());
+        drwav_uninit(&wav);
         return false;
     }