Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 (Tek) 9/28/84 based on 9/17/84; site motel6.UUCP Path: utzoo!watmath!clyde!burl!ulysses!bellcore!decvax!decwrl!pyramid!hplabs!tektronix!reed!motel6!keith From: keith@motel6.UUCP (Keith Packard) Newsgroups: net.sources.bugs Subject: yet another desk calculator has a bug! Message-ID: <200@motel6.UUCP> Date: Wed, 19-Mar-86 00:14:12 EST Article-I.D.: motel6.200 Posted: Wed Mar 19 00:14:12 1986 Date-Received: Sat, 22-Mar-86 05:01:35 EST Distribution: net Organization: 5440 SE 41st, Portland, OR Lines: 63 I thought this program was too simple to have bugs! Alas I was mistaken. The following is a segment of the file expr.c, toward the end of the routine eeval. The changed lines are marked with '!' marks. Keith Packard ...!tektronix!reed!motel6!keith -----------------------------------start of fix--------------------- case INC: if (f->e_left == 0) { s = f->e_right->e_name; switch (s->s_type) { case UNDEF: s->s_type = VARTYPE; case VARTYPE: r = s->s_value; s->s_value += 1; break; case STACKTYPE: r = framep[s->s_offset]; framep[s->s_offset] += 1; } return r; } else { ! s = f->e_left->e_name; switch (s->s_type) { case UNDEF: s->s_type = VARTYPE; case VARTYPE: return (s->s_value += 1); case STACKTYPE: return (framep[s->s_offset] += 1); } } case DEC: if (f->e_left == 0) { s = f->e_right->e_name; switch (s->s_type) { case UNDEF: s->s_type = VARTYPE; case VARTYPE: r = s->s_value; s->s_value -= 1.0; break; case STACKTYPE: r = framep[s->s_offset]; framep[s->s_offset] -= 1.0; } return r; } else { ! s = f->e_left->e_name; switch (s->s_type) { case UNDEF: s->s_type = VARTYPE; case VARTYPE: return (s->s_value -= 1.0); case STACKTYPE: return (framep[s->s_offset] -= 1.0); } } ----------------------------------end of fix---------------------------------