Initialize variables in initialization list

This fixes several performance issues reported by Coverity:

    Variable 'master_trainer_' is assigned in constructor body.
    Consider performing initialization in initialization list.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
This commit is contained in:
Stefan Weil 2024-08-25 22:14:33 +02:00
parent 4ea8495d1c
commit 6be58e54fa
7 changed files with 34 additions and 40 deletions

View File

@ -39,12 +39,9 @@ static const char kIllegalUnicharMsg[] = "Illegal unichar %s in ambiguity specif
// UNICHAR_LEN * (MAX_AMBIG_SIZE + 1) for each part of the ambig
const int kMaxAmbigStringSize = UNICHAR_LEN * (MAX_AMBIG_SIZE + 1);
AmbigSpec::AmbigSpec() {
AmbigSpec::AmbigSpec() : correct_ngram_id(INVALID_UNICHAR_ID), type(NOT_AMBIG), wrong_ngram_size(0) {
wrong_ngram[0] = INVALID_UNICHAR_ID;
correct_fragments[0] = INVALID_UNICHAR_ID;
correct_ngram_id = INVALID_UNICHAR_ID;
type = NOT_AMBIG;
wrong_ngram_size = 0;
}
// Initializes the ambigs by adding a nullptr pointer to each table.

View File

@ -59,13 +59,12 @@ PERM_CONFIG_STRUCT::~PERM_CONFIG_STRUCT() {
delete[] Ambigs;
}
ADAPT_CLASS_STRUCT::ADAPT_CLASS_STRUCT() {
NumPermConfigs = 0;
MaxNumTimesSeen = 0;
TempProtos = NIL_LIST;
PermProtos = NewBitVector(MAX_NUM_PROTOS);
PermConfigs = NewBitVector(MAX_NUM_CONFIGS);
ADAPT_CLASS_STRUCT::ADAPT_CLASS_STRUCT() :
NumPermConfigs(0),
MaxNumTimesSeen(0),
PermProtos(NewBitVector(MAX_NUM_PROTOS)),
PermConfigs(NewBitVector(MAX_NUM_CONFIGS)),
TempProtos(NIL_LIST) {
zero_all_bits(PermProtos, WordsInVectorOfSize(MAX_NUM_PROTOS));
zero_all_bits(PermConfigs, WordsInVectorOfSize(MAX_NUM_CONFIGS));
@ -124,16 +123,13 @@ int Classify::GetFontinfoId(ADAPT_CLASS_STRUCT *Class, uint8_t ConfigId) {
///
/// @param MaxProtoId max id of any proto in new config
/// @param FontinfoId font information from pre-trained templates
TEMP_CONFIG_STRUCT::TEMP_CONFIG_STRUCT(int maxProtoId, int fontinfoId) {
int NumProtos = maxProtoId + 1;
Protos = NewBitVector(NumProtos);
NumTimesSeen = 1;
MaxProtoId = maxProtoId;
ProtoVectorSize = WordsInVectorOfSize(NumProtos);
TEMP_CONFIG_STRUCT::TEMP_CONFIG_STRUCT(int maxProtoId, int fontinfoId) :
NumTimesSeen(1),
ProtoVectorSize(WordsInVectorOfSize(maxProtoId + 1)),
MaxProtoId(maxProtoId),
Protos(NewBitVector(maxProtoId + 1)),
FontinfoId(fontinfoId) {
zero_all_bits(Protos, ProtoVectorSize);
FontinfoId = fontinfoId;
}
TEMP_CONFIG_STRUCT::~TEMP_CONFIG_STRUCT() {

View File

@ -78,8 +78,8 @@ static void Win32WarningHandler(const char *module, const char *fmt, va_list ap)
class AutoWin32ConsoleOutputCP {
public:
explicit AutoWin32ConsoleOutputCP(UINT codeCP) {
oldCP_ = GetConsoleOutputCP();
explicit AutoWin32ConsoleOutputCP(UINT codeCP) :
oldCP_(GetConsoleOutputCP()) {
SetConsoleOutputCP(codeCP);
}
~AutoWin32ConsoleOutputCP() {

View File

@ -38,15 +38,16 @@ INT_VAR(devanagari_split_debuglevel, 0, "Debug level for split shiro-rekha proce
BOOL_VAR(devanagari_split_debugimage, 0,
"Whether to create a debug image for split shiro-rekha process.");
ShiroRekhaSplitter::ShiroRekhaSplitter() {
orig_pix_ = nullptr;
segmentation_block_list_ = nullptr;
splitted_image_ = nullptr;
global_xheight_ = kUnspecifiedXheight;
perform_close_ = false;
debug_image_ = nullptr;
pageseg_split_strategy_ = NO_SPLIT;
ocr_split_strategy_ = NO_SPLIT;
ShiroRekhaSplitter::ShiroRekhaSplitter() :
orig_pix_(nullptr),
splitted_image_(nullptr),
pageseg_split_strategy_(NO_SPLIT),
ocr_split_strategy_(NO_SPLIT),
debug_image_(nullptr),
segmentation_block_list_(nullptr),
global_xheight_(kUnspecifiedXheight),
perform_close_(false)
{
}
ShiroRekhaSplitter::~ShiroRekhaSplitter() {

View File

@ -67,8 +67,8 @@ TabFind::TabFind(int gridsize, const ICOORD &bleft, const ICOORD &tright, TabVec
: AlignedBlob(gridsize, bleft, tright)
, resolution_(resolution)
, image_origin_(0, tright.y() - 1)
, v_it_(&vectors_) {
width_cb_ = nullptr;
, v_it_(&vectors_)
, width_cb_(nullptr) {
v_it_.add_list_after(vlines);
SetVerticalSkewAndParallelize(vertical_x, vertical_y);
using namespace std::placeholders; // for _1

View File

@ -99,10 +99,10 @@ Wordrec::Wordrec()
"Save alternative paths found during chopping"
" and segmentation search",
params())
, pass2_ok_split(0.0f) {
prev_word_best_choice_ = nullptr;
language_model_ = std::make_unique<LanguageModel>(&get_fontinfo_table(), &(getDict()));
fill_lattice_ = nullptr;
, language_model_(std::make_unique<LanguageModel>(&get_fontinfo_table(), &(getDict())))
, pass2_ok_split(0.0f)
, prev_word_best_choice_(nullptr)
, fill_lattice_(nullptr) {
}
} // namespace tesseract

View File

@ -156,9 +156,9 @@ protected:
return file::JoinPath(FLAGS_test_tmpdir, name);
}
MasterTrainerTest() {
shape_table_ = nullptr;
master_trainer_ = nullptr;
MasterTrainerTest() :
shape_table_(nullptr),
master_trainer_(nullptr) {
}
~MasterTrainerTest() override {
delete shape_table_;