Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!rochester!jpayne From: jpayne@rochester.ARPA (Jonathan Payne) Newsgroups: net.emacs,net.bugs.4bsd Subject: JOVE version 4.3 and beyond (a bug report) Message-ID: <20490@rochester.ARPA> Date: Sun, 31-Aug-86 14:45:14 EDT Article-I.D.: rocheste.20490 Posted: Sun Aug 31 14:45:14 1986 Date-Received: Sun, 31-Aug-86 19:58:19 EDT Organization: U of Rochester, CS Dept., Rochester, NY Lines: 23 Keywords: none Xref: mnetor net.emacs:1443 net.bugs.4bsd:906 There is a bug in the version of JOVE that got released with 4.3BSD. At first it was hard to recreate but it seemed to get easier as time went on (probably my imagination). The symptom is pretty horrible-- every now and then part of your text was replaced with text from some place else, some other buffer, etc. Anyway, the fix is pretty simple. In the file IO.C, procedure getblock(), very near the top: if (lastb != 0 && lastb->b_bno == bno) return lastb->b_buf + off; becomes if (lastb != 0 && lastb->b_bno == bno) { lastb->b_dirty |= iof; return lastb->b_buf + off; } Basically the problem was that in certain circumstances a block which WAS being written into WASN'T being marked as dirty, so when it came time to reassign that block to another one the old contents were being thrown away instead of first being written to the disk. Sorry 'bout this one.