From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28219 invoked from network); 16 Feb 2002 09:29:24 -0000 Received: from sunsite.dk (130.225.247.90) by ns1.primenet.com.au with SMTP; 16 Feb 2002 09:29:24 -0000 Received: (qmail 2065 invoked by alias); 16 Feb 2002 09:29:02 -0000 Mailing-List: contact zsh-users-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 4678 Received: (qmail 2041 invoked from network); 16 Feb 2002 09:28:56 -0000 Date: Sat, 16 Feb 2002 01:28:25 -0800 (PST) From: Wayne Davison X-X-Sender: To: Adam Spiers Cc: zsh users mailing list Subject: Re: vanishing history In-Reply-To: <20011128161905.A9726@corelli.new.ox.ac.uk> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Wed, 28 Nov 2001, Adam Spiers wrote: > Does anyone have any idea why my .zshhistory occasionally looses the > vast majority of its contents? I can't reproduce it, so I can't begin > to track down what's going on. I've seen this from time to time, but also have been unable to reproduce it. In pouring over the code I did finally see one potential way that the loss of contents could happen: if the history file is locked by another process while we're trying to rewrite it. Here's the fix (which causes us to just punt on the rewrite if we read nothing): Index: Src/hist.c --- Src/hist.c 16 Feb 2002 09:15:07 -0000 1.39 +++ Src/hist.c 16 Feb 2002 09:21:16 -0000 @@ -2083,7 +2083,8 @@ hist_ignore_all_dups |= isset(HISTSAVENODUPS); readhistfile(fn, err, 0); hist_ignore_all_dups = isset(HISTIGNOREALLDUPS); - savehistfile(fn, err, 0); + if (histlinect) + savehistfile(fn, err, 0); deletehashtable(histtab); curhist = remember_curhist; ..wayne..