From: Johannes Schindelin Date: Wed, 04 Feb 2009 09:57:32 GMT Subject: Re: [PATCH] delete_ref(): fix uninitialized value, found by valgrind Message-ID: In-Reply-To: <7v7i467ndd.fsf@gitster.siamese.dyndns.org> Hi, On Tue, 3 Feb 2009, Junio C Hamano wrote: > Johannes Schindelin writes: > > > The variable 'err' was not necessarily initialized before it was used. > > > > Signed-off-by: Johannes Schindelin > > --- > > refs.c | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/refs.c b/refs.c > > index b13e01b..ded7ec4 100644 > > --- a/refs.c > > +++ b/refs.c > > @@ -929,7 +929,7 @@ static int log_ref_write(const char *ref_name, const unsigned char *old_sha1, > > int delete_ref(const char *refname, const unsigned char *sha1, int delopt) > > { > > struct ref_lock *lock; > > - int err, i = 0, ret = 0, flag = 0; > > + int err = 0, i = 0, ret = 0, flag = 0; > > struct stat loginfo; > > int log = !lstat(git_path("logs/%s", refname), &loginfo); > > Sorry, I do not see it. > > There are two uses of "err" in this function, both of which looks like: > > if (err && errno != ENOENT) > > but both of these places have > > err = unlink(...) > > immediately before it. I should know better by now than to base my work on the tip of my Git tree. Sure enough I have an attempt at resolving the "deleting a branch deletes its reflog, too" issue, which has that bug. Sorry for the noise, Dscho