From 61b8afd893ecdbc15924aaf8f44014b41c5623ef Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Sun, 19 Dec 2021 15:39:49 +0100 Subject: [PATCH] Paragraph::needsCProtection(): use inset list rather than checking each pos whether it's an inset or not. This was a significant performance bottleneck (particularly getInset() itself seems slow). --- src/Paragraph.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index 7fb46aee7d..2408261665 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -4108,15 +4108,14 @@ bool Paragraph::needsCProtection(bool const fragile) const } // now check whether we have insets that need cprotection - pos_type size = pos_type(d->text_.size()); - for (pos_type i = 0; i < size; ++i) { - if (!isInset(i)) + for (auto const & icit : d->insetlist_) { + Inset const * ins = icit.inset; + if (!ins) continue; - Inset const * ins = getInset(i); if (ins->needsCProtection(maintext, fragile)) return true; // Now check math environments - InsetMath const * im = getInset(i)->asInsetMath(); + InsetMath const * im = ins->asInsetMath(); if (!im || im->cell(0).empty()) continue; switch(im->cell(0)[0]->lyxCode()) {