[Kst] [Bug 103442] event monitor: rejects syntax that should be accepted

George Staikos staikos at kde.org
Thu Apr 7 19:39:04 CEST 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=103442         
staikos kde org changed:

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



------- Additional Comments From staikos kde org  2005-04-07 19:39 -------
CVS commit by staikos: 

parse the equation manually when setting it
BUG: 103442


  M +2 -0      ksteventmonitor_i.cpp   1.33
  M +25 -18    ksteventmonitorentry.cpp   1.42
  M +2 -0      ksteventmonitorentry.h   1.24


--- kdeextragear-2/kst/kst/ksteventmonitor_i.cpp  #1.32:1.33
 @ -148,4 +148,6  @ void KstEventMonitorI::fillEvent(EventMo
     event->setLevel(KstDebug::Error);
   }
+
+  event->reparse();
 }
 

--- kdeextragear-2/kst/kst/ksteventmonitorentry.cpp  #1.41:1.42
 @ -113,4 +113,27  @ void EventMonitorEntry::commonConstructo
 
 
+bool EventMonitorEntry::reparse() {
+  _bIsValid = false;
+  if (!_strEvent.isEmpty()) {
+    QMutexLocker ml(&Equation::mutex());
+    yy_scan_string(_strEvent.latin1());
+    int rc = yyparse();
+    if (rc == 0) {
+      _pExpression = static_cast<Equation::Node*>(ParsedEquation);
+      Equation::Context ctx;
+      Equation::FoldVisitor vis(&ctx, &_pExpression);
+      KstStringMap stm;
+      _pExpression->collectObjects(_vectorsUsed, _inputScalars, stm);
+
+      _bIsValid = true;
+    } else {
+      delete (Equation::Node*)ParsedEquation;
+    }
+    ParsedEquation = 0L;
+  }
+  return _bIsValid;
+}
+
+
 void EventMonitorEntry::save(QTextStream &ts, const QString& indent) {
   QString l2 = indent + "  ";
 @ -151,5 +174,4  @ KstObject::UpdateType EventMonitorEntry:
   }
   
-  KstObject::UpdateType retVal = NO_CHANGE;
   KstVectorPtr xv = *_xVector;
   KstVectorPtr yv = *_yVector;
 @ -161,20 +183,5  @ KstObject::UpdateType EventMonitorEntry:
 
   if (!_pExpression) {
-    if (!_strEvent.isEmpty()) {
-      QMutexLocker ml(&Equation::mutex());
-      yy_scan_string(_strEvent.latin1());
-      int rc = yyparse();
-      if (rc == 0) {
-        _pExpression = static_cast<Equation::Node*>(ParsedEquation);
-        Equation::FoldVisitor vis(&ctx, &_pExpression);
-        KstStringMap stm;
-        _pExpression->collectObjects(_vectorsUsed, _inputScalars, stm);
-
-        _bIsValid = true;
-      } else {
-        delete (Equation::Node*)ParsedEquation;
-      }
-      ParsedEquation = 0L;
-    }
+    reparse();
   }
 
 @ -236,5 +243,5  @ KstObject::UpdateType EventMonitorEntry:
   }
 
-  return setLastUpdateResult(retVal);
+  return setLastUpdateResult(NO_CHANGE);
 }
 

--- kdeextragear-2/kst/kst/ksteventmonitorentry.h  #1.23:1.24
 @ -64,4 +64,6  @ class EventMonitorEntry : public KstData
     void logImmediately();
 
+    bool reparse();
+
   private slots:
     void  slotUpdate();


More information about the Kst mailing list