--- a/pack.c +++ b/pack.c @@ -627,9 +627,10 @@ int l, i, n; vlong o; Dir *d; + Avl *old; k.hash = h; - if((obj = (Object*)avllookup(objcache, &k, 0)) != nil) + if((obj = (Object*)lookupavl(objcache, &k)) != nil) return obj; d = nil; @@ -644,7 +645,7 @@ goto error; Bterm(f); parseobject(obj); - avlinsert(objcache, obj); + insertavl(objcache, obj, &old); return obj; } @@ -680,7 +681,7 @@ goto error; Bterm(f); parseobject(obj); - avlinsert(objcache, obj); + insertavl(objcache, obj, &old); return obj; error: free(d); @@ -716,6 +717,7 @@ Biobuf *f; Hash h; int c; + Avl *old; if((f = Bopen(pack, OREAD)) == nil) return -1; @@ -757,7 +759,7 @@ if (readpacked(f, o) == 0){ sha1((uchar*)o->all, o->size + strlen(o->all) + 1, o->hash.h, nil); parseobject(o); - avlinsert(objcache, o); + insertavl(objcache, o, &old); valid[i] = 1; n++; } --- a/util.c +++ b/util.c @@ -141,7 +141,7 @@ inflateinit(); deflateinit(); authorpat = regcomp("[\t ]*(.*)[\t ]+([0-9]+)[\t ]+([\\-+]?[0-9]+)"); - objcache = avlcreate(objcmp); + objcache = mkavltree(objcmp); } int