Skip to content
  • brian m. carlson's avatar
    hash: create union for hash context allocation · ac73cedf
    brian m. carlson authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    In various parts of our code, we want to allocate a structure
    representing the internal state of a hash algorithm.  The original
    implementation of the hash algorithm abstraction assumed we would do
    that using heap allocations, and added a context size element to struct
    git_hash_algo.  However, most of the existing code uses stack
    allocations and conversion would needlessly complicate various parts of
    the code.  Add a union for the purpose of allocating hash contexts on
    the stack and a typedef for ease of use.  Use this union for defining
    the init, update, and final functions to avoid casts.  Remove the ctxsz
    element for struct git_hash_algo, which is no longer very useful.
    
    This does mean that stack allocations will grow slightly as additional
    hash functions are added, but this should not be a significant problem,
    since we don't allocate many hash contexts.  The improved usability and
    benefits from avoiding dynamic allocation outweigh this small downside.
    
    Signed-off-by: default avatarbrian m. carlson <sandals@crustytoothpaste.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    ac73cedf