[Kst] [Bug 118748] Double superscripts causes kst to crash.

George Staikos staikos at kde.org
Tue Dec 20 22:40:12 CET 2005


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=118748         
staikos kde org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From staikos kde org  2005-12-20 22:40 -------
SVN commit 490138 by staikos:

Don't crash due to failed parsing of labels.
BUG: 118748


 M  +33 -14    kstplotlabel.cpp  
 M  +15 -11    kstviewlabel.cpp  


--- trunk/extragear/graphics/kst/kst/kstplotlabel.cpp #490137:490138
 @ -80,6 +80,7  @
     _txt = text;
     reparse();
     computeTextSize();
+    //setDirty(true);
   }
 }
 
 @ -90,14 +91,20  @
 
 
 void KstPlotLabel::setRotation(float rotation) {
-  _rotation = rotation;
-  _sinr = fabs(sin(_rotation * M_PI / 180.0));
-  _cosr = fabs(cos(_rotation * M_PI / 180.0));
+  if (_rotation != rotation) {
+    _rotation = rotation;
+    _sinr = fabs(sin(_rotation * M_PI / 180.0));
+    _cosr = fabs(cos(_rotation * M_PI / 180.0));
+    //setDirty(true);
+  }
 }
 
 
 void KstPlotLabel::setJustification(KstLJustifyType justify) {
-  _justify = justify;
+  if (_justify != justify) {
+    _justify = justify;
+    //setDirty(true);
+  }
 }
 
 
 @ -110,6 +117,7  @
   if (_fontName != fontName) {
     _fontName = fontName;
     computeTextSize();
+    //setDirty(true);
   }
 }
 
 @ -123,12 +131,16  @
   if (_interpret != interpreted) {
     _interpret = interpreted;
     reparse();
+    //setDirty(true);
   }
 }
 
 
 void KstPlotLabel::setDoScalarReplacement(bool replace) {
-  _replace = replace;
+  if (_replace != replace) {
+    _replace = replace;
+    //setDirty(true);
+  }
 }
 
 
 @ -145,18 +157,22  @
   p.translate(tx, ty);
   p.rotate(_rotation);
 
-  renderLabel(rc, lp->chunk);
+  if (lp && lp->chunk) {
+    renderLabel(rc, lp->chunk);
+  }
 }
 
 
 void KstPlotLabel::computeTextSize() {
-  RenderContext rc(_fontName, _absFontSize, 0L);
-  rc.setSubstituteScalars(_replace);
-  renderLabel(rc, _parsed->chunk);
-  _textWidth = rc.x;
-  _ascent = rc.ascent;
-  _textHeight = 1 + rc.ascent + rc.descent;
-  _lineSpacing = QFontMetrics(QFont(_fontName, _absFontSize)).lineSpacing();
+  if (_parsed && _parsed->chunk) {
+    RenderContext rc(_fontName, _absFontSize, 0L);
+    rc.setSubstituteScalars(_replace);
+    renderLabel(rc, _parsed->chunk);
+    _textWidth = rc.x;
+    _ascent = rc.ascent;
+    _textHeight = 1 + rc.ascent + rc.descent;
+    _lineSpacing = QFontMetrics(QFont(_fontName, _absFontSize)).lineSpacing();
+  }
 }
 
 
 @ -166,7 +182,10  @
 
 
 void KstPlotLabel::setFontSize(int size) {
-  _fontSize = size;
+  if (_fontSize != size) {
+    _fontSize = size;
+    //setDirty(true);
+  }
 }
 
 
--- trunk/extragear/graphics/kst/kst/kstviewlabel.cpp #490137:490138
 @ -292,7 +292,9  @
   QTime t;
   t.start();
 #endif
-  renderLabel(rc, lp->chunk);
+  if (lp && lp->chunk) {
+    renderLabel(rc, lp->chunk);
+  }
 #ifdef BENCHMARK
   kstdDebug() << "render took: " << t.elapsed() << endl;
   t.start();
 @ -305,20 +307,22  @
 
 
 void KstViewLabel::computeTextSize(Label::Parsed *lp) {
-  RenderContext rc(_fontName, _absFontSize, 0L);
-  rc.setSubstituteScalars(_replace);
-  rc.precision = _dataPrecision;
+  if (lp && lp->chunk) {
+    RenderContext rc(_fontName, _absFontSize, 0L);
+    rc.setSubstituteScalars(_replace);
+    rc.precision = _dataPrecision;
 #ifdef BENCHMARK
-  QTime t;
-  t.start();
+    QTime t;
+    t.start();
 #endif
-  renderLabel(rc, lp->chunk);
+    renderLabel(rc, lp->chunk);
 #ifdef BENCHMARK
-  kstdDebug() << "compute (false render) took: " << t.elapsed() << endl;
+    kstdDebug() << "compute (false render) took: " << t.elapsed() << endl;
 #endif
-  _textWidth = rc.xMax;
-  _ascent = rc.ascent;
-  _textHeight = 1 + rc.ascent + rc.descent;
+    _textWidth = rc.xMax;
+    _ascent = rc.ascent;
+    _textHeight = 1 + rc.ascent + rc.descent;
+  }
 }


More information about the Kst mailing list