Spaces:
Running
Running
main : fix dangling pointer when using stdin for input (#65)
Browse files- examples/main/main.cpp +5 -6
examples/main/main.cpp
CHANGED
|
@@ -450,28 +450,27 @@ int main(int argc, char ** argv) {
|
|
| 450 |
for (int f = 0; f < (int) params.fname_inp.size(); ++f) {
|
| 451 |
const auto fname_inp = params.fname_inp[f];
|
| 452 |
|
|
|
|
|
|
|
| 453 |
// WAV input
|
| 454 |
-
std::vector<float> pcmf32;
|
| 455 |
{
|
| 456 |
drwav wav;
|
|
|
|
| 457 |
|
| 458 |
if (fname_inp == "-") {
|
| 459 |
-
std::vector<uint8_t> wav_data;
|
| 460 |
{
|
| 461 |
uint8_t buf[1024];
|
| 462 |
while (true)
|
| 463 |
{
|
| 464 |
const size_t n = fread(buf, 1, sizeof(buf), stdin);
|
| 465 |
-
if (n == 0)
|
| 466 |
-
{
|
| 467 |
break;
|
| 468 |
}
|
| 469 |
wav_data.insert(wav_data.end(), buf, buf + n);
|
| 470 |
}
|
| 471 |
}
|
| 472 |
|
| 473 |
-
if (drwav_init_memory(&wav, wav_data.data(), wav_data.size(), NULL) == false)
|
| 474 |
-
{
|
| 475 |
fprintf(stderr, "error: failed to open WAV file from stdin\n");
|
| 476 |
return 4;
|
| 477 |
}
|
|
|
|
| 450 |
for (int f = 0; f < (int) params.fname_inp.size(); ++f) {
|
| 451 |
const auto fname_inp = params.fname_inp[f];
|
| 452 |
|
| 453 |
+
std::vector<float> pcmf32; // mono-channel F32 PCM
|
| 454 |
+
|
| 455 |
// WAV input
|
|
|
|
| 456 |
{
|
| 457 |
drwav wav;
|
| 458 |
+
std::vector<uint8_t> wav_data; // used for pipe input from stdin
|
| 459 |
|
| 460 |
if (fname_inp == "-") {
|
|
|
|
| 461 |
{
|
| 462 |
uint8_t buf[1024];
|
| 463 |
while (true)
|
| 464 |
{
|
| 465 |
const size_t n = fread(buf, 1, sizeof(buf), stdin);
|
| 466 |
+
if (n == 0) {
|
|
|
|
| 467 |
break;
|
| 468 |
}
|
| 469 |
wav_data.insert(wav_data.end(), buf, buf + n);
|
| 470 |
}
|
| 471 |
}
|
| 472 |
|
| 473 |
+
if (drwav_init_memory(&wav, wav_data.data(), wav_data.size(), NULL) == false) {
|
|
|
|
| 474 |
fprintf(stderr, "error: failed to open WAV file from stdin\n");
|
| 475 |
return 4;
|
| 476 |
}
|