]> git.lyx.org Git - features.git/commitdiff
Fix bug #8089: Handle spaces at the end of the stream
authorVincent van Ravesteijn <vfr@lyx.org>
Wed, 2 May 2012 11:37:32 +0000 (13:37 +0200)
committerVincent van Ravesteijn <vfr@lyx.org>
Wed, 2 May 2012 16:24:24 +0000 (18:24 +0200)
If the stream is good (i.e. there are still tokens) and we expect an
argument, we call getArg(). However, if there are only spaces, the stream
suddenly isn't good anymore after 'skipSpaces' and we would get an error
when calling 'getChar'. Therefore we have to check whether the stream is
still good.

MathParser: Do not rewind the stream if we can't read from it

If the stream is not good, we don't need to 'putback', because we didn't
read anything yet. If we now do rewind the stream, we are asking for
problems as in bug #8089.

This was introduced in [3cafb856\lyxgit] to fix bug #4318.

(cherry picked from commit 26dcfcd34374f86562af56dfe5f858d10ea587db)
(cherry picked from commit 1ef930c05826340d7497d6994338f6d63772de5f)

src/mathed/MathParser.cpp
status.20x

index 0b5da9838bdbaa9f621873d4e58e760a3a21da1d..713e5554b53df7636f41bb127264583aed961120 100644 (file)
@@ -535,7 +535,6 @@ char_type Parser::getChar()
 {
        if (!good()) {
                error("The input stream is not well...");
-               putback();
                return 0;
        }
        return tokens_[pos_++].character();
@@ -544,9 +543,12 @@ char_type Parser::getChar()
 
 docstring Parser::getArg(char_type left, char_type right)
 {
+       docstring result;
        skipSpaces();
 
-       docstring result;
+       if (!good())
+               return result;
+
        char_type c = getChar();
 
        if (c != left)
index 20faef72a8e3a6c6d019c9edef570108294888c0..7aa77c9478c198062b852a747568d61586d1bebb 100644 (file)
@@ -103,6 +103,8 @@ What's new
 
 - Fixed assertion on selection of insets in RTL text (bug 7518).
 
+- Fixed an infinite loop when pasting '\\ ' into math (bug 8089).
+
 - Don't reset the selected format each time we click into a new paragraph
   in View->Source (bug 7997).