shithub: git9

Download patch

ref: 87c0fa596894a5bbca89d38c1ccfadbfd7ae8f0a
parent: 227c880ac570682905b72025a01e652f4b8da717
author: Ori Bernstein <ori@eigenstate.org>
date: Mon Mar 9 16:01:20 EDT 2020

fix refs on empty dir

we were not increasing the reference count
on the empty directory when returning it,
so we would eventually release it twice.
oops.

--- a/fs.c
+++ b/fs.c
@@ -237,9 +237,9 @@
 	aux = p;
 	c = crumb(aux, 0);
 	e = c->obj;
-	m = e->tree->ent[i].mode;
 	if(i >= e->tree->nent)
 		return -1;
+	m = e->tree->ent[i].mode;
 	if(e->tree->ent[i].ismod)
 		o = emptydir();
 	else if((o = readobject(e->tree->ent[i].h)) == nil)
--- a/util.c
+++ b/util.c
@@ -13,7 +13,7 @@
 	static Object *e;
 
 	if(e != nil)
-		return e;
+		return ref(e);
 	e = emalloc(sizeof(Object));
 	e->hash = Zhash;
 	e->type = GTree;