Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Mar 5, 2015
  1. @gitster

    zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw}

    René Scharfe authored gitster committed
    Clear the git_zstream variable at the start of git_deflate_init() etc.
    so that callers don't have to do that.
    Signed-off-by: Rene Scharfe <>
    Signed-off-by: Junio C Hamano <>
Commits on Apr 22, 2013
  1. @slattarini @gitster

    zlib: fix compilation failures with Sun C Compilaer

    slattarini authored gitster committed
    Do this by removing a couple of useless return statements.  Without this
    change, compilation with Sun C Compiler 5.9 (SunOS_i386 Patch 124868-15
    2010/08/11) fails with the following message:
      "zlib.c", line 192: void function cannot return value
      "zlib.c", line 201: void function cannot return value
      cc: acomp failed for zlib.c
    Signed-off-by: Stefano Lattarini <>
    Signed-off-by: Junio C Hamano <>
Commits on Mar 17, 2013
  1. @gitster

    archive-zip: use deflateInit2() to ask for raw compressed data

    René Scharfe authored gitster committed
    We use the function git_deflate_init() -- which wraps the zlib function
    deflateInit() -- to initialize compression of ZIP file entries.  This
    results in compressed data prefixed with a two-bytes long header and
    followed by a four-bytes trailer.  ZIP file entries consist of ZIP
    headers and raw compressed data instead, so we remove the zlib wrapper
    before writing the result.
    We can ask zlib for the the raw compressed data without the unwanted
    parts in the first place by using deflateInit2() and specifying a
    negative number of bits to size the window.  For that purpose, factor
    out the function do_git_deflate_init() and add git_deflate_init_raw(),
    which wraps it.  Then use the latter in archive-zip.c and get rid of
    the code that stripped the zlib header and trailer.
    Also rename the helper function zlib_deflate() to zlib_deflate_raw()
    to reflect the change.
    Thus we avoid generating data that we throw away anyway, the code
    becomes shorter and some magic constants are removed.
    Signed-off-by: Rene Scharfe <>
    Signed-off-by: Junio C Hamano <>
Commits on Dec 1, 2011
  1. @gitster

    bulk-checkin: replace fast-import based implementation

    gitster authored
    This extends the earlier approach to stream a large file directly from the
    filesystem to its own packfile, and allows "git add" to send large files
    directly into a single pack. Older code used to spawn fast-import, but the
    new bulk-checkin API replaces it.
    Signed-off-by: Junio C Hamano <>
Commits on Jun 10, 2011
  1. @gitster

    zlib: allow feeding more than 4GB in one go

    gitster authored
    Update zlib_post_call() that adjusts the wrapper's notion of avail_in and
    avail_out to what came back from zlib, so that the callers can feed
    buffers larger than than 4GB to the API.
    When underlying inflate/deflate stopped processing because we fed a buffer
    larger than 4GB limit, detect that case, update the state variables, and
    let the zlib function work another round.
    Signed-off-by: Junio C Hamano <>
  2. @gitster

    zlib: zlib can only process 4GB at a time

    gitster authored
    The size of objects we read from the repository and data we try to put
    into the repository are represented in "unsigned long", so that on larger
    architectures we can handle objects that weigh more than 4GB.
    But the interface defined in zlib.h to communicate with inflate/deflate
    limits avail_in (how many bytes of input are we calling zlib with) and
    avail_out (how many bytes of output from zlib are we ready to accept)
    fields effectively to 4GB by defining their type to be uInt.
    In many places in our code, we allocate a large buffer (e.g. mmap'ing a
    large loose object file) and tell zlib its size by assigning the size to
    avail_in field of the stream, but that will truncate the high octets of
    the real size. The worst part of this story is that we often pass around
    z_stream (the state object used by zlib) to keep track of the number of
    used bytes in input/output buffer by inspecting these two fields, which
    practically limits our callchain to the same 4GB limit.
    Wrap z_stream in another structure git_zstream that can express avail_in
    and avail_out in unsigned long. For now, just die() when the caller gives
    a size that cannot be given to a single zlib call. In later patches in the
    series, we would make git_inflate() and git_deflate() internally loop to
    give callers an illusion that our "improved" version of zlib interface can
    operate on a buffer larger than 4GB in one go.
    Signed-off-by: Junio C Hamano <>
  3. @gitster

    zlib: wrap deflateBound() too

    gitster authored
    Signed-off-by: Junio C Hamano <>
  4. @gitster

    zlib: wrap deflate side of the API

    gitster authored
    Wrap deflateInit, deflate, and deflateEnd for everybody, and the sole use
    of deflateInit2 in remote-curl.c to tell the library to use gzip header
    and trailer in git_deflate_init_gzip().
    There is only one caller that cares about the status from deflateEnd().
    Introduce git_deflate_end_gently() to let that sole caller retrieve the
    status and act on it (i.e. die) for now, but we would probably want to
    make inflate_end/deflate_end die when they ran out of memory and get
    rid of the _gently() kind.
    Signed-off-by: Junio C Hamano <>
  5. @gitster

    zlib: wrap inflateInit2 used to accept only for gzip format

    gitster authored
    http-backend.c uses inflateInit2() to tell the library that it wants to
    accept only gzip format. Wrap it in a helper function so that readers do
    not have to wonder what the magic numbers 15 and 16 are for.
    Signed-off-by: Junio C Hamano <>
  6. @gitster

    zlib wrapper: refactor error message formatter

    gitster authored
    Before refactoring the main part of the wrappers, first move the
    logic to convert error status that come back from zlib to string
    to a helper function.
    Signed-off-by: Junio C Hamano <>
Commits on Nov 10, 2010
  1. @jrn @gitster

    wrapper: give zlib wrappers their own translation unit

    jrn authored gitster committed
    Programs using xmalloc() but not git_inflate() require -lz on the
    linker command line because git_inflate() is in the same translation
    unit as xmalloc().
    Signed-off-by: Jonathan Nieder <>
    Signed-off-by: Junio C Hamano <>
Something went wrong with that request. Please try again.