1. 23 Feb, 2022 2 commits
  2. 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
  3. 21 Nov, 2020 4 commits
  4. 11 Oct, 2020 2 commits
  5. 21 Feb, 2019 2 commits
    • 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
  6. 22 Jan, 2019 1 commit
  7. 21 Oct, 2018 1 commit
  8. 15 Jul, 2018 1 commit
  9. 07 Jun, 2018 2 commits
    • settings: allow swapping out memory allocator · 74b7ddbf
      Tie in the newly created infrastructure for swapping out memory
      allocators into our settings code. A user can now simply use the new
      option "GIT_OPT_SET_ALLOCATOR" with `git_libgit2_opts`, passing in an
      already initialized allocator structure as vararg.
      Patrick Steinhardt committed
    • alloc: make memory allocators use function pointers · 9865cd16
      Currently, our memory allocators are being redirected to the correct
      implementation at compile time by simply using macros. In order to make
      them swappable at runtime, this commit reshuffles that by instead making
      use of a global "git_allocator" structure, whose pointers are set up to
      reference the allocator functions. Like this, it becomes easy to swap
      out allocators by simply setting these function pointers.
      
      In order to initialize a "git_allocator", our provided allocators
      "stdalloc" and "crtdbg" both provide an init function. This is being
      called to initialize a passed in allocator struct and set up its members
      correctly.
      
      No support is yet included to enable users of libgit2 to switch out the
      memory allocator at a global level.
      Patrick Steinhardt committed