main: Fix two memory leaks

When Tesseract terminates by calling the exit function,
the destructor of any local auto variable is not called.

Fix two cases by using static variables.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
This commit is contained in:
Stefan Weil 2017-05-12 21:15:12 +02:00 committed by Zdenko Podobný
parent 658a198535
commit 828bb63891

View File

@ -421,7 +421,9 @@ int main(int argc, char** argv) {
}
PERF_COUNT_START("Tesseract:main")
tesseract::TessBaseAPI api;
// Avoid memory leak caused by auto variable when exit() is called.
static tesseract::TessBaseAPI api;
api.SetOutputName(outputbase);
@ -490,7 +492,8 @@ int main(int argc, char** argv) {
(api.GetBoolVariable("tessedit_resegment_from_boxes", &b) && b) ||
(api.GetBoolVariable("tessedit_make_boxes_from_boxes", &b) && b);
tesseract::PointerVector<tesseract::TessResultRenderer> renderers;
// Avoid memory leak caused by auto variable when exit() is called.
static tesseract::PointerVector<tesseract::TessResultRenderer> renderers;
if (in_training_mode) {
renderers.push_back(NULL);