1. 20 Jul, 2021 1 commit
  2. 19 Jul, 2021 1 commit
    • alloc: add GIT_DEBUG_STRICT_ALLOC · 48e6b02b
      Add `GIT_DEBUG_STRICT_ALLOC` to help identify problematic callers of
      allocation code that pass a `0` size to the allocators and then expect a
      non-`NULL` return.
      
      When given a 0-size allocation, `malloc` _may_ return either a `NULL`
      _or_ a pointer that is not writeable.  Most systems return a non-`NULL`
      pointer; AIX is an outlier.  We should be able to cope with this AIXy
      behavior, so this adds an option to emulate it.
      Edward Thomson committed
  3. 09 Dec, 2020 1 commit
    • alloc: set up an allocator that fails before library init · 08f28ff5
      We require the library to be initialized with git_libgit2_init before it
      is functional.  However, if a user tries to uses the library without
      doing so - as they might when getting started with the library for the
      first time - we will likely crash.
      
      This commit introduces some guard rails - now instead of having _no_
      allocator by default, we'll have an allocator that always fails, and
      never tries to set an error message (since the thread-local state is
      set up by git_libgit2_init).  We've modified the error retrieval
      function to (try to) ensure that the library has been initialized before
      getting the thread-local error message.
      
      (Unfortunately, we cannot determine if the thread local storage has
      actually been configured, this does require initialization by
      git_libgit2_init.  But a naive attempt should be good enough for most
      cases.)
      Edward Thomson committed
  4. 21 Nov, 2020 3 commits
  5. 11 Oct, 2020 1 commit
  6. 21 Feb, 2019 3 commits
    • allocators: make crtdbg allocator reuse its own realloc · 765ff6e0
      In commit 6e0dfc6f (Make stdalloc__reallocarray call
      stdalloc__realloc, 2019-02-16), we have changed the stdalloc
      allocator to reuse `stdalloc__realloc` to implement
      `stdalloc__reallocarray`. This commit is making the same change
      for the Windows-specific crtdbg allocator to avoid code
      duplication.
      Patrick Steinhardt committed
    • allocators: extract crtdbg allocator into its own file · 48727e5d
      The Windows-specific crtdbg allocator is currently mixed into the
      crtdbg stacktracing compilation unit, making it harder to find
      than necessary. Extract it and move it into the new "allocators/"
      subdirectory to improve discoverability.
      
      This change means that the crtdbg compilation unit is now
      compiled unconditionally, whereas it has previously only been
      compiled on Windows platforms. Thus we now have additional guards
      around the code so that it will only be compiled if
      GIT_MSVC_CRTDBG is defined. This also allows us to move over the
      fallback-implementation of `git_win32_crtdbg_init_allocator` into
      the same compilation unit.
      Patrick Steinhardt committed
    • allocators: move standard allocator into subdirectory · b63396b7
      Right now, our two allocator implementations are scattered around
      the tree in "stdalloc.h" and "win32/w32_crtdbg_stacktrace.h".
      Start grouping them together in a single directory "allocators/",
      similar to how e.g. our streams are organized.
      Patrick Steinhardt committed