main : fix dangling pointer when using stdin for input (#65)

pull/183/head
Georgi Gerganov 2022-11-24 17:53:51 +02:00
parent d7024cf9dc
commit 454b91de16
No known key found for this signature in database
GPG Key ID: 449E073F9DC10735
1 changed files with 5 additions and 6 deletions

View File

@ -450,28 +450,27 @@ int main(int argc, char ** argv) {
for (int f = 0; f < (int) params.fname_inp.size(); ++f) { for (int f = 0; f < (int) params.fname_inp.size(); ++f) {
const auto fname_inp = params.fname_inp[f]; const auto fname_inp = params.fname_inp[f];
std::vector<float> pcmf32; // mono-channel F32 PCM
// WAV input // WAV input
std::vector<float> pcmf32;
{ {
drwav wav; drwav wav;
std::vector<uint8_t> wav_data; // used for pipe input from stdin
if (fname_inp == "-") { if (fname_inp == "-") {
std::vector<uint8_t> wav_data;
{ {
uint8_t buf[1024]; uint8_t buf[1024];
while (true) while (true)
{ {
const size_t n = fread(buf, 1, sizeof(buf), stdin); const size_t n = fread(buf, 1, sizeof(buf), stdin);
if (n == 0) if (n == 0) {
{
break; break;
} }
wav_data.insert(wav_data.end(), buf, buf + n); wav_data.insert(wav_data.end(), buf, buf + n);
} }
} }
if (drwav_init_memory(&wav, wav_data.data(), wav_data.size(), NULL) == false) if (drwav_init_memory(&wav, wav_data.data(), wav_data.size(), NULL) == false) {
{
fprintf(stderr, "error: failed to open WAV file from stdin\n"); fprintf(stderr, "error: failed to open WAV file from stdin\n");
return 4; return 4;
} }