[LyX/master] Prevent wrong reference to duplicated (but deleted) label
Juergen Spitzmueller
spitz at lyx.org
Sun Mar 29 15:28:23 UTC 2020
commit 1e34871d3865c711b2005be429d9290c5e7223ef
Author: Juergen Spitzmueller <spitz at lyx.org>
Date: Sun Mar 29 17:47:59 2020 +0200
Prevent wrong reference to duplicated (but deleted) label
Fixes #11803
---
src/insets/InsetLabel.cpp | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/src/insets/InsetLabel.cpp b/src/insets/InsetLabel.cpp
index d8009ad..30211b8 100644
--- a/src/insets/InsetLabel.cpp
+++ b/src/insets/InsetLabel.cpp
@@ -316,6 +316,20 @@ void InsetLabel::latex(otexstream & os, OutputParams const & runparams_in) const
{
OutputParams runparams = runparams_in;
docstring command = getCommand(runparams);
+ docstring const label = getParam("name");
+ if (buffer().params().output_changes
+ && buffer().activeLabel(label)
+ && buffer().insetLabel(label, true) != this) {
+ // this is a deleted label and we have a non-deleted with the same id
+ // rename it for output to prevent wrong references
+ docstring newlabel = label;
+ int i = 1;
+ while (buffer().insetLabel(newlabel)) {
+ newlabel = label + "-DELETED-" + convert<docstring>(i);
+ ++i;
+ }
+ command = subst(command, label, newlabel);
+ }
// In macros with moving arguments, such as \section,
// we store the label and output it after the macro (#2154)
if (runparams_in.postpone_fragile_stuff)
More information about the lyx-cvs
mailing list