Merge pull request #3351 from lissyx/leak-intermediate-decode

Fix leak in C++ client
This commit is contained in:
lissyx 2020-09-29 18:30:13 +02:00 committed by GitHub
commit f20f939ade
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 0 deletions

View File

@ -184,10 +184,12 @@ LocalDsSTT(ModelState* aCtx, const short* aBuffer, size_t aBufferSize,
}
size_t off = 0;
const char *last = nullptr;
const char *prev = nullptr;
while (off < aBufferSize) {
size_t cur = aBufferSize - off > stream_size ? stream_size : aBufferSize - off;
DS_FeedAudioContent(ctx, aBuffer + off, cur);
off += cur;
prev = last;
const char* partial = DS_IntermediateDecode(ctx);
if (last == nullptr || strcmp(last, partial)) {
printf("%s\n", partial);
@ -195,6 +197,9 @@ LocalDsSTT(ModelState* aCtx, const short* aBuffer, size_t aBufferSize,
} else {
DS_FreeString((char *) partial);
}
if (prev != nullptr && prev != last) {
DS_FreeString((char *) prev);
}
}
if (last != nullptr) {
DS_FreeString((char *) last);