Skip to content

Commit 5a0a019

Browse files
committed
dpso_ocr/engine/tesseract: Catch filesystem_error from Tesseract 5.5.0
See tesseract-ocr/tesseract#4364
1 parent 85d14cc commit 5a0a019

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

src/dpso_ocr/engine/tesseract/lang_utils.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <algorithm>
44
#include <cstring>
5+
#include <filesystem>
56
#include <initializer_list>
67

78
#include <tesseract/baseapi.h>
@@ -69,7 +70,17 @@ std::vector<std::string> getAvailableLangs(const char* dataDir)
6970

7071
#if TESSERACT_MAJOR_VERSION >= 5
7172

72-
tess.GetAvailableLanguagesAsVector(&result);
73+
// In Tesseract 5.5.0, GetAvailableLanguagesAsVector() was
74+
// rewritten to use std::filesystem, but due to the lack of any
75+
// exception handling, the method leaks filesystem_error (e.g. if
76+
// the directory does not exist).
77+
//
78+
// See https://github.com/tesseract-ocr/tesseract/issues/4364
79+
try {
80+
tess.GetAvailableLanguagesAsVector(&result);
81+
} catch (std::filesystem::filesystem_error&) {
82+
return result;
83+
}
7384

7485
result.erase(
7586
std::remove_if(

src/ui/ui_common/init_user_data.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include "init_user_data.h"
22

33
#include <filesystem>
4-
#include <system_error>
54

65
#include "dpso_utils/error_get.h"
76
#include "dpso_utils/error_set.h"

tests/dpso_utils/test_byte_order.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,3 @@ void testByteOrder()
100100

101101

102102
REGISTER_TEST(testByteOrder);
103-

0 commit comments

Comments
 (0)