i think the list insertion code needs a single-read
test that f->alarm != 0. to prevent the 0 from
acting like a fencepost.  e.g. trying to insert -10 into
list -40 -30 0 -20.

        if(alarms.head) {
                l = &alarms.head;
                for(f = *l; f; f = f->palarm) {
>>                      fw = f->alarm;
>>                      if(fw != 0 && (long)(fw - when) >= 0) {
                                up->palarm = f;
                                *l = up;
                                goto done;
                        }
                        l = &f->palarm;
                }
                *l = up;
        }


- erik

Reply via email to