Browse Source

Fix buffer size calculation when initializing output.

With the previous calculation, it was possible for the buffer to be
a byte or two too small to hold all of the data.
master
Christopher Brannon 4 years ago
parent
commit
d8ec91e809
No account linked to committer's email address
1 changed files with 3 additions and 1 deletions
  1. 3
    1
      src/libespeak-ng/speech.c

+ 3
- 1
src/libespeak-ng/speech.c View File

@@ -280,7 +280,9 @@ ESPEAK_NG_API espeak_ng_STATUS espeak_ng_InitializeOutput(espeak_ng_OUTPUT_MODE
buffer_length = min_buffer_length;

// allocate 2 bytes per sample
outbuf_size = (buffer_length * samplerate)/500;
// Always round up to the nearest sample and the nearest byte.
int millisamples = buffer_length * samplerate;
outbuf_size = (millisamples + 1000 - millisamples % 1000) / 500;
out_start = (unsigned char *)realloc(outbuf, outbuf_size);
if (out_start == NULL)
return ENOMEM;

Loading…
Cancel
Save