On Sun, Nov 04, 2007 at 09:41:27PM -0500, John Shafer wrote:
> I've attached a remind file that triggers the error.  I'm sorry it isn't
> shorter, but I can't figure out what's triggering the error.  Most of
> the stuff in there is directly copied from one of the reminder files
> included with remind.

OK, this looks like a bug in Remind, new to release 03.01.03.  The
following is a stripped-down reminders file that triggers the bug when
Remind is invoked via "remind -s":

REM Thu Nov 22 SCANFROM [trigger(today()-7)] SATISFY 1
OMIT [trigger(trigdate())] MSG %"Thanksgiving%" Day
REM Aug 30 2007 *7 AT 9:30 DURATION 1:15 SKIP SATISFY [trigdate() > 
'2008-01-01'] MSG Class

David: This issue goes a bit beyond my comfort level in Remind's
internals, but I've attached a patch containing my best guess as to the
proper solution.

Paul


diff -pru remind-03.01.03/src/calendar.c 
remind-03.01.03-satisfy-patch/src/calendar.c
--- remind-03.01.03/src/calendar.c      2007-09-16 16:47:26.000000000 -0500
+++ remind-03.01.03-satisfy-patch/src/calendar.c        2007-11-04 
23:06:28.000000000 -0600
@@ -604,6 +604,7 @@ static int DoCalRem(ParsePtr p, int col)
     if (trig.typ == SAT_TYPE) {
        r=DoSatRemind(&trig, &tim, p);
        if (r) return r;
+        if (!LastTrigValid) return OK;
        r=ParseToken(p, &buf);
        if (r) return r;
        FindToken(DBufValue(&buf), &tok);
diff -pru remind-03.01.03/src/dorem.c remind-03.01.03-satisfy-patch/src/dorem.c
--- remind-03.01.03/src/dorem.c 2007-09-26 07:37:29.000000000 -0500
+++ remind-03.01.03-satisfy-patch/src/dorem.c   2007-11-04 23:24:06.000000000 
-0600
@@ -820,9 +820,14 @@ int DoSatRemind(Trigger *trig, TimeTrig 
     while (iter++ < MaxSatIter) {
        jul = ComputeTrigger(jul, trig, &r);
        if (r) {
-           if (r == E_CANT_TRIG) return OK; else return r;
+           if (r == E_CANT_TRIG) {
+               LastTrigValid = 0;
+               return OK;
+           }
+           else return r;
        }
        if (jul == -1) {
+           LastTrigValid = 0;
            return OK;
        }
        s = p->pos;
_______________________________________________
Remind-fans mailing list
[email protected]
http://lists.whatexit.org/mailman/listinfo/remind-fans

Reply via email to