private unsafe int ReadInternal(byte[] array, int offset, int count) { if (count == 0) { return(0); } int result; fixed(byte *ptr = ref (array != null && array.Length != 0)?ref array[0] : ref *null) { IntPtr buffer = new IntPtr((void *)(ptr + offset)); result = DeflateStream.ReadZStream(this.z_stream, buffer, count); } DeflateStream.CheckResult(result, "ReadInternal"); return(result); }