commit 68bc50502996a168874723c65edfecebc81af846
Author: Enrico Forestieri <for...@lyx.org>
Date:   Mon Jun 26 23:10:30 2017 +0200

    Fix bug #10705
    
    Seemingly, std::regex does not account for newlines in the string.
---
 src/insets/InsetListings.cpp |    6 +++++-
 status.22x                   |    3 +++
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp
index 207e98b..66dca57 100644
--- a/src/insets/InsetListings.cpp
+++ b/src/insets/InsetListings.cpp
@@ -420,7 +420,11 @@ docstring InsetListings::getCaption(OutputParams const & 
runparams) const
        // NOTE that } is not allowed in blah2.
        regex const reg("(.*)\\\\label\\{(.*?)\\}(.*)");
        string const new_cap("$1$3},label={$2");
-       return from_utf8(regex_replace(to_utf8(cap), reg, new_cap));
+       // Replace '\n' with an improbable character from Private Use Area-A
+       // and then return to '\n' after the regex replacement.
+       string const capstr = to_utf8(subst(cap, char_type('\n'), 0xffffd));
+       return subst(from_utf8(regex_replace(capstr, reg, new_cap)),
+                    0xffffd, char_type('\n'));
 }
 
 
diff --git a/status.22x b/status.22x
index c48eb52..d516bfb 100644
--- a/status.22x
+++ b/status.22x
@@ -49,6 +49,9 @@ What's new
 
 - Catch "! Incomplete \if[x]" LaTeX error (bug 10666).
 
+- Fix caption handling in listings insets when it is split into multiple
+  lines in the LaTeX output (bug 10705).
+
 
 * LYX2LYX
 

Reply via email to