[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