[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