commit 9f3367e665f5a4048944401aef45d0e1e6d36260
Author: Richard Heck <[email protected]>
Date:   Mon Feb 9 17:24:13 2015 -0500

    Fix bug #9383. Writing directly to the output stream bypassed the
    machinery that clears the tag stack.
    
    (cherry picked from commit 5a78a112b6ac14a9cdb0fd5dc0c06aa89578eff5)

diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp
index 70911fd..3ff490e 100644
--- a/src/insets/InsetQuotes.cpp
+++ b/src/insets/InsetQuotes.cpp
@@ -307,26 +307,30 @@ int InsetQuotes::plaintext(odocstringstream & os,
 }
 
 
-int InsetQuotes::docbook(odocstream & os, OutputParams const &) const
-{
+docstring InsetQuotes::getQuoteEntity() const {
        if (times_ == DoubleQuotes) {
                if (side_ == LeftQuote)
-                       os << "&ldquo;";
-               else
-                       os << "&rdquo;";
-       } else {
-               if (side_ == LeftQuote)
-                       os << "&lsquo;";
+                       return from_ascii("&ldquo;");
                else
-                       os << "&rsquo;";
+                       return from_ascii("&rdquo;");
        }
+       if (side_ == LeftQuote)
+               return from_ascii("&lsquo;");
+       else
+               return from_ascii("&rsquo;");
+}
+
+
+int InsetQuotes::docbook(odocstream & os, OutputParams const &) const
+{
+       os << getQuoteEntity();
        return 0;
 }
 
 
 docstring InsetQuotes::xhtml(XHTMLStream & xs, OutputParams const & op) const
 {
-       docbook(xs.os(), op);
+       xs << XHTMLStream::ESCAPE_NONE << getQuoteEntity();
        return docstring();
 }
 
diff --git a/src/insets/InsetQuotes.h b/src/insets/InsetQuotes.h
index 743208f..068137e 100644
--- a/src/insets/InsetQuotes.h
+++ b/src/insets/InsetQuotes.h
@@ -109,6 +109,8 @@ private:
        void parseString(std::string const &);
        ///
        docstring displayString() const;
+       ///
+       docstring getQuoteEntity() const;
 
        ///
        QuoteLanguage language_;

Reply via email to