[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [cantor/KDE/4.14] src/lib: Fix crash when rendering latex. Patch by kibos1er, thanks.
From:       Alexander Rieder <alexanderrieder () gmail ! com>
Date:       2014-10-14 19:36:00
Message-ID: E1Xe7t2-0003wC-NB () scm ! kde ! org
[Download RAW message or body]

Git commit 44e995a16b860115e9d1560da2a2530552b823a2 by Alexander Rieder.
Committed on 14/10/2014 at 19:46.
Pushed by arieder into branch 'KDE/4.14'.

Fix crash when rendering latex. Patch by kibos1er, thanks.

Apparently it's possible for Expression::latexRendered() to be called,
if Expression::result() is not a text result. Now we don't crash in
that case anymore.

BUG: 311708
FIXED-IN: 4.14.3

M  +15   -8    src/lib/expression.cpp

http://commits.kde.org/cantor/44e995a16b860115e9d1560da2a2530552b823a2

diff --git a/src/lib/expression.cpp b/src/lib/expression.cpp
index f564546..4cc3c4f 100644
--- a/src/lib/expression.cpp
+++ b/src/lib/expression.cpp
@@ -187,17 +187,24 @@ void Expression::latexRendered()
     kDebug()<<"rendered a result to "<<renderer->imagePath();
     //replace the textresult with the rendered latex image result
     //ImageResult* latex=new ImageResult( d->latexFilename );
-    if(renderer->renderingSuccessful())
+    if(renderer->renderingSuccessful()&&result())
     {
-        TextResult* r=dynamic_cast<TextResult*>(result());
-        LatexResult* latex=new LatexResult(r->data().toString().trimmed(), \
                KUrl(renderer->imagePath()), r->plain());
-        setResult( latex );
+        if (result()->type() == TextResult::Type)
+        {
+            TextResult* r=dynamic_cast<TextResult*>(result());
+            LatexResult* latex=new LatexResult(r->data().toString().trimmed(), \
KUrl(renderer->imagePath()), r->plain()); +            setResult( latex );
+        }
+        else if (result()->type() == LatexResult::Type)
+        {
+            LatexResult* previousLatexResult=dynamic_cast<LatexResult*>(result());
+            LatexResult* latex=new \
LatexResult(previousLatexResult->data().toString().trimmed(), \
KUrl(renderer->imagePath()), previousLatexResult->plain()); +            setResult( \
latex ); +        }
     }else
     {
-        //if rendering with latex was not successfull, just use the plain text \
                version
-        //if available
-        TextResult* r=dynamic_cast<TextResult*>(result());
-        setResult(new TextResult(r->plain()));
+        //if rendering with latex was not successfull, just
+        //do nothing and keep the old result.
         kDebug()<<"error rendering latex: "<<renderer->errorMessage();
     }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic