]> git.lyx.org Git - lyx.git/blobdiff - src/Text.cpp
Fix a crash when closing tabs
[lyx.git] / src / Text.cpp
index 8435b73972f6bf0de32b40765e5df207c1a1f6d1..579089dab8d93fcc2fc864a50738f24d21c0c2fb 100644 (file)
@@ -859,11 +859,12 @@ void Text::insertStringAsLines(Cursor & cur, docstring const & str,
        pos_type pos = cur.pos();
 
        // The special chars we handle
-       map<wchar_t, InsetSpecialChar::Kind> specialchars;
-       specialchars[0x200c] = InsetSpecialChar::LIGATURE_BREAK;
-       specialchars[0x200b] = InsetSpecialChar::ALLOWBREAK;
-       specialchars[0x2026] = InsetSpecialChar::LDOTS;
-       specialchars[0x2011] = InsetSpecialChar::NOBREAKDASH;
+       static map<wchar_t, InsetSpecialChar::Kind> specialchars = {
+               { 0x200c, InsetSpecialChar::LIGATURE_BREAK },
+               { 0x200b, InsetSpecialChar::ALLOWBREAK },
+               { 0x2026, InsetSpecialChar::LDOTS },
+               { 0x2011, InsetSpecialChar::NOBREAKDASH }
+       };
 
        // insert the string, don't insert doublespace
        bool space_inserted = true;
@@ -894,11 +895,11 @@ void Text::insertStringAsLines(Cursor & cur, docstring const & str,
                                ++pos;
                                space_inserted = true;
                        }
-               } else if (specialchars.find(ch) != specialchars.end()) {
-                       par.insertInset(pos, new InsetSpecialChar(specialchars.find(ch)->second),
-                                       font, bparams.track_changes ?
-                                               Change(Change::INSERTED)
-                                             : Change(Change::UNCHANGED));
+               } else if (specialchars.find(ch) != specialchars.end()
+                          && (par.insertInset(pos, new InsetSpecialChar(specialchars.find(ch)->second),
+                                              font, bparams.track_changes
+                                              ? Change(Change::INSERTED)
+                                              : Change(Change::UNCHANGED)))) {
                        ++pos;
                        space_inserted = false;
                } else if (!isPrintable(ch)) {
@@ -1880,6 +1881,7 @@ bool Text::dissolveInset(Cursor & cur)
                }
 
                pasteParagraphList(cur, plist, b.params().documentClassPtr(),
+                                  b.params().authors(),
                                   b.errorList("Paste"));
        }
 
@@ -1950,7 +1952,7 @@ bool Text::splitInset(Cursor & cur)
                cur.setMark(false);
                cur.selHandle(false);
                cur.resetAnchor();
-               bool atlastpos;
+               bool atlastpos = false;
                if (cur.pos() == 0 && cur.pit() > 0) {
                        // if we are at par start, remove this par
                        cur.text()->backspace(cur);