public override void Materialize(WindowCursor curs) { if (CachedBytes != null) { return; } if (Type != ObjCommit) { UnpackedObjectCache.Entry cache = PackFile.readCache(DataOffset); if (cache != null) { curs.Release(); CachedBytes = cache.data; return; } } try { CachedBytes = PackFile.decompress(DataOffset, Size, curs); curs.Release(); if (Type != ObjCommit) { PackFile.saveCache(DataOffset, CachedBytes, Type); } } catch (IOException dfe) { throw new CorruptObjectException("object at " + DataOffset + " in " + PackFile.File.FullName + " has bad zlib stream", dfe); } }
public override void Materialize(WindowCursor curs) { if (curs == null) { throw new System.ArgumentNullException("curs"); } if (CachedBytes != null) { return; } if (Type != ObjCommit) { UnpackedObjectCache.Entry cache = PackFile.readCache(DataOffset); if (cache != null) { curs.Release(); Type = cache.type; Size = cache.data.Length; CachedBytes = cache.data; return; } } try { PackedObjectLoader baseLoader = GetBaseLoader(curs); baseLoader.Materialize(curs); CachedBytes = BinaryDelta.Apply(baseLoader.CachedBytes, PackFile.decompress(DataOffset, _deltaSize, curs)); curs.Release(); Type = baseLoader.Type; Size = CachedBytes.Length; if (Type != ObjCommit) { PackFile.saveCache(DataOffset, CachedBytes, Type); } } catch (IOException dfe) { throw new CorruptObjectException("object at " + DataOffset + " in " + PackFile.File.FullName + " has bad zlib stream", dfe); } }