[GNA]Fix crash in gna_pluing when using POT (#16003)

This commit is contained in:
Marcin Kusmierski 2023-04-03 17:22:56 +02:00 committed by GitHub
parent dec425c408
commit 0a56927671
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -148,13 +148,28 @@ private:
inf_loop_count++;
} else {
if (inf_loop_count > 0 &&
(inf_loop_history.size() % inf_loop_pattern.size() == 0 || sf.allLayersProcessed()) &&
!std::equal(inf_loop_history.begin() + (inf_loop_history.size() - inf_loop_pattern.size()),
inf_loop_history.end(),
inf_loop_pattern.begin())) {
inf_loop_count = 0;
inf_loop_pattern.clear();
log::debug() << "infinite loop fixed\n";
(inf_loop_pattern.size() > 0 && inf_loop_history.size() % inf_loop_pattern.size() == 0 ||
sf.allLayersProcessed())) {
int32_t history_shift = 0;
int32_t pattern_shift = 0;
if (inf_loop_history.size() > inf_loop_pattern.size()) {
history_shift = inf_loop_history.size() - inf_loop_pattern.size();
} else {
pattern_shift = inf_loop_pattern.size() - inf_loop_history.size();
}
if (!std::equal(inf_loop_history.begin() + history_shift,
inf_loop_history.end(),
inf_loop_pattern.begin() + pattern_shift)) {
inf_loop_count = 0;
log::debug() << "inf_loop_pattern:\n";
for (const auto& s : inf_loop_pattern) {
log::debug() << "\t " << s << '\n';
}
inf_loop_pattern.clear();
log::debug() << "infinite loop fixed\n";
}
}
}