rugged 1.6.3 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -1,8 +1,6 @@
1
1
  # util: a shared library for common utility functions for libgit2 projects
2
2
 
3
3
  add_library(util OBJECT)
4
- set_target_properties(util PROPERTIES C_STANDARD 90)
5
- set_target_properties(util PROPERTIES C_EXTENSIONS OFF)
6
4
 
7
5
  configure_file(git2_features.h.in git2_features.h)
8
6
 
@@ -36,7 +34,7 @@ if(USE_SHA1 STREQUAL "CollisionDetection")
36
34
  target_compile_definitions(util PRIVATE SHA1DC_NO_STANDARD_INCLUDES=1)
37
35
  target_compile_definitions(util PRIVATE SHA1DC_CUSTOM_INCLUDE_SHA1_C=\"git2_util.h\")
38
36
  target_compile_definitions(util PRIVATE SHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"git2_util.h\")
39
- elseif(USE_SHA1 STREQUAL "OpenSSL" OR USE_SHA1 STREQUAL "OpenSSL-Dynamic")
37
+ elseif(USE_SHA1 STREQUAL "OpenSSL" OR USE_SHA1 STREQUAL "OpenSSL-Dynamic" OR USE_SHA1 STREQUAL "OpenSSL-FIPS")
40
38
  add_definitions(-DOPENSSL_API_COMPAT=0x10100000L)
41
39
  file(GLOB UTIL_SRC_SHA1 hash/openssl.*)
42
40
  elseif(USE_SHA1 STREQUAL "CommonCrypto")
@@ -51,9 +49,9 @@ endif()
51
49
 
52
50
  list(SORT UTIL_SRC_SHA1)
53
51
 
54
- if(USE_SHA256 STREQUAL "Builtin")
52
+ if(USE_SHA256 STREQUAL "builtin")
55
53
  file(GLOB UTIL_SRC_SHA256 hash/builtin.* hash/rfc6234/*)
56
- elseif(USE_SHA256 STREQUAL "OpenSSL" OR USE_SHA256 STREQUAL "OpenSSL-Dynamic")
54
+ elseif(USE_SHA256 STREQUAL "OpenSSL" OR USE_SHA256 STREQUAL "OpenSSL-Dynamic" OR USE_SHA256 STREQUAL "OpenSSL-FIPS")
57
55
  add_definitions(-DOPENSSL_API_COMPAT=0x10100000L)
58
56
  file(GLOB UTIL_SRC_SHA256 hash/openssl.*)
59
57
  elseif(USE_SHA256 STREQUAL "CommonCrypto")
@@ -63,7 +61,7 @@ elseif(USE_SHA256 STREQUAL "mbedTLS")
63
61
  elseif(USE_SHA256 STREQUAL "Win32")
64
62
  file(GLOB UTIL_SRC_SHA256 hash/win32.*)
65
63
  else()
66
- message(FATAL_ERROR "Asked for unknown SHA256 backend: ${USE_SHA256}")
64
+ message(FATAL_ERROR "asked for unknown SHA256 backend: ${USE_SHA256}")
67
65
  endif()
68
66
 
69
67
  list(SORT UTIL_SRC_SHA256)
@@ -8,27 +8,89 @@
8
8
  #include "alloc.h"
9
9
  #include "runtime.h"
10
10
 
11
- #include "allocators/failalloc.h"
12
11
  #include "allocators/stdalloc.h"
12
+ #include "allocators/debugalloc.h"
13
+ #include "allocators/failalloc.h"
13
14
  #include "allocators/win32_leakcheck.h"
14
15
 
15
16
  /* Fail any allocation until git_libgit2_init is called. */
16
17
  git_allocator git__allocator = {
17
18
  git_failalloc_malloc,
18
- git_failalloc_calloc,
19
- git_failalloc_strdup,
20
- git_failalloc_strndup,
21
- git_failalloc_substrdup,
22
19
  git_failalloc_realloc,
23
- git_failalloc_reallocarray,
24
- git_failalloc_mallocarray,
25
20
  git_failalloc_free
26
21
  };
27
22
 
23
+ void *git__calloc(size_t nelem, size_t elsize)
24
+ {
25
+ size_t newsize;
26
+ void *ptr;
27
+
28
+ if (GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize))
29
+ return NULL;
30
+
31
+ if ((ptr = git__malloc(newsize)))
32
+ memset(ptr, 0, newsize);
33
+
34
+ return ptr;
35
+ }
36
+
37
+ void *git__reallocarray(void *ptr, size_t nelem, size_t elsize)
38
+ {
39
+ size_t newsize;
40
+
41
+ if (GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize))
42
+ return NULL;
43
+
44
+ return git__realloc(ptr, newsize);
45
+ }
46
+
47
+ void *git__mallocarray(size_t nelem, size_t elsize)
48
+ {
49
+ return git__reallocarray(NULL, nelem, elsize);
50
+ }
51
+
52
+ char *git__strdup(const char *str)
53
+ {
54
+ size_t len = strlen(str) + 1;
55
+ void *ptr = git__malloc(len);
56
+
57
+ if (ptr)
58
+ memcpy(ptr, str, len);
59
+
60
+ return ptr;
61
+ }
62
+
63
+ char *git__strndup(const char *str, size_t n)
64
+ {
65
+ size_t len = p_strnlen(str, n);
66
+ char *ptr = git__malloc(len + 1);
67
+
68
+ if (ptr) {
69
+ memcpy(ptr, str, len);
70
+ ptr[len] = '\0';
71
+ }
72
+
73
+ return ptr;
74
+ }
75
+
76
+ char *git__substrdup(const char *str, size_t n)
77
+ {
78
+ char *ptr = git__malloc(n + 1);
79
+
80
+ if (ptr) {
81
+ memcpy(ptr, str, n);
82
+ ptr[n] = '\0';
83
+ }
84
+
85
+ return ptr;
86
+ }
87
+
28
88
  static int setup_default_allocator(void)
29
89
  {
30
90
  #if defined(GIT_WIN32_LEAKCHECK)
31
91
  return git_win32_leakcheck_init_allocator(&git__allocator);
92
+ #elif defined(GIT_DEBUG_STRICT_ALLOC)
93
+ return git_debugalloc_init_allocator(&git__allocator);
32
94
  #else
33
95
  return git_stdalloc_init_allocator(&git__allocator);
34
96
  #endif
@@ -10,17 +10,42 @@
10
10
 
11
11
  #include "git2/sys/alloc.h"
12
12
 
13
+ #include "git2_util.h"
14
+
13
15
  extern git_allocator git__allocator;
14
16
 
15
- #define git__malloc(len) git__allocator.gmalloc(len, __FILE__, __LINE__)
16
- #define git__calloc(nelem, elsize) git__allocator.gcalloc(nelem, elsize, __FILE__, __LINE__)
17
- #define git__strdup(str) git__allocator.gstrdup(str, __FILE__, __LINE__)
18
- #define git__strndup(str, n) git__allocator.gstrndup(str, n, __FILE__, __LINE__)
19
- #define git__substrdup(str, n) git__allocator.gsubstrdup(str, n, __FILE__, __LINE__)
20
- #define git__realloc(ptr, size) git__allocator.grealloc(ptr, size, __FILE__, __LINE__)
21
- #define git__reallocarray(ptr, nelem, elsize) git__allocator.greallocarray(ptr, nelem, elsize, __FILE__, __LINE__)
22
- #define git__mallocarray(nelem, elsize) git__allocator.gmallocarray(nelem, elsize, __FILE__, __LINE__)
23
- #define git__free git__allocator.gfree
17
+ GIT_INLINE(void *) git__malloc(size_t len)
18
+ {
19
+ void *p = git__allocator.gmalloc(len, __FILE__, __LINE__);
20
+
21
+ if (!p)
22
+ git_error_set_oom();
23
+
24
+ return p;
25
+ }
26
+
27
+ GIT_INLINE(void *) git__realloc(void *ptr, size_t size)
28
+ {
29
+ void *p = git__allocator.grealloc(ptr, size, __FILE__, __LINE__);
30
+
31
+ if (!p)
32
+ git_error_set_oom();
33
+
34
+ return p;
35
+ }
36
+
37
+ GIT_INLINE(void) git__free(void *ptr)
38
+ {
39
+ git__allocator.gfree(ptr);
40
+ }
41
+
42
+ extern void *git__calloc(size_t nelem, size_t elsize);
43
+ extern void *git__mallocarray(size_t nelem, size_t elsize);
44
+ extern void *git__reallocarray(void *ptr, size_t nelem, size_t elsize);
45
+
46
+ extern char *git__strdup(const char *str);
47
+ extern char *git__strndup(const char *str, size_t n);
48
+ extern char *git__substrdup(const char *str, size_t n);
24
49
 
25
50
  /**
26
51
  * This function is being called by our global setup routines to
@@ -0,0 +1,73 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+
8
+ #include "debugalloc.h"
9
+
10
+ static void *debugalloc__malloc(size_t len, const char *file, int line)
11
+ {
12
+ unsigned char *ptr;
13
+ size_t total = len + sizeof(size_t);
14
+
15
+ GIT_UNUSED(file);
16
+ GIT_UNUSED(line);
17
+
18
+ if (!len || (ptr = malloc(total)) == NULL)
19
+ return NULL;
20
+
21
+ memcpy(ptr, &len, sizeof(size_t));
22
+ return ptr + sizeof(size_t);
23
+ }
24
+
25
+ static void *debugalloc__realloc(void *_ptr, size_t len, const char *file, int line)
26
+ {
27
+ unsigned char *ptr = _ptr, *newptr;
28
+ size_t original_len;
29
+ size_t total = len + sizeof(size_t);
30
+
31
+ GIT_UNUSED(file);
32
+ GIT_UNUSED(line);
33
+
34
+ if (!len && !ptr)
35
+ return NULL;
36
+
37
+ if (!len) {
38
+ free(ptr - sizeof(size_t));
39
+ return NULL;
40
+ }
41
+
42
+ if ((newptr = malloc(total)) == NULL)
43
+ return NULL;
44
+
45
+ if (ptr) {
46
+ memcpy(&original_len, ptr - sizeof(size_t), sizeof(size_t));
47
+ memcpy(newptr + sizeof(size_t), ptr, min(len, original_len));
48
+
49
+ memset(ptr - sizeof(size_t), 0xfd, original_len + sizeof(size_t));
50
+ free(ptr - sizeof(size_t));
51
+ }
52
+
53
+ memcpy(newptr, &len, sizeof(size_t));
54
+ return newptr + sizeof(size_t);
55
+ }
56
+
57
+ static void debugalloc__free(void *_ptr)
58
+ {
59
+ unsigned char *ptr = _ptr;
60
+
61
+ if (!ptr)
62
+ return;
63
+
64
+ free(ptr - sizeof(size_t));
65
+ }
66
+
67
+ int git_debugalloc_init_allocator(git_allocator *allocator)
68
+ {
69
+ allocator->gmalloc = debugalloc__malloc;
70
+ allocator->grealloc = debugalloc__realloc;
71
+ allocator->gfree = debugalloc__free;
72
+ return 0;
73
+ }
@@ -5,16 +5,13 @@
5
5
  * a Linking Exception. For full terms see the included COPYING file.
6
6
  */
7
7
 
8
- #ifndef CLI_cli_h__
9
- #define CLI_cli_h__
10
-
11
- #define PROGRAM_NAME "git2"
8
+ #ifndef INCLUDE_allocators_debugalloc_h__
9
+ #define INCLUDE_allocators_debugalloc_h__
12
10
 
13
11
  #include "git2_util.h"
14
12
 
15
- #include "error.h"
16
- #include "opt.h"
17
- #include "opt_usage.h"
18
- #include "sighandler.h"
13
+ #include "alloc.h"
14
+
15
+ int git_debugalloc_init_allocator(git_allocator *allocator);
19
16
 
20
- #endif /* CLI_cli_h__ */
17
+ #endif
@@ -16,45 +16,6 @@ void *git_failalloc_malloc(size_t len, const char *file, int line)
16
16
  return NULL;
17
17
  }
18
18
 
19
- void *git_failalloc_calloc(size_t nelem, size_t elsize, const char *file, int line)
20
- {
21
- GIT_UNUSED(nelem);
22
- GIT_UNUSED(elsize);
23
- GIT_UNUSED(file);
24
- GIT_UNUSED(line);
25
-
26
- return NULL;
27
- }
28
-
29
- char *git_failalloc_strdup(const char *str, const char *file, int line)
30
- {
31
- GIT_UNUSED(str);
32
- GIT_UNUSED(file);
33
- GIT_UNUSED(line);
34
-
35
- return NULL;
36
- }
37
-
38
- char *git_failalloc_strndup(const char *str, size_t n, const char *file, int line)
39
- {
40
- GIT_UNUSED(str);
41
- GIT_UNUSED(n);
42
- GIT_UNUSED(file);
43
- GIT_UNUSED(line);
44
-
45
- return NULL;
46
- }
47
-
48
- char *git_failalloc_substrdup(const char *start, size_t n, const char *file, int line)
49
- {
50
- GIT_UNUSED(start);
51
- GIT_UNUSED(n);
52
- GIT_UNUSED(file);
53
- GIT_UNUSED(line);
54
-
55
- return NULL;
56
- }
57
-
58
19
  void *git_failalloc_realloc(void *ptr, size_t size, const char *file, int line)
59
20
  {
60
21
  GIT_UNUSED(ptr);
@@ -65,27 +26,6 @@ void *git_failalloc_realloc(void *ptr, size_t size, const char *file, int line)
65
26
  return NULL;
66
27
  }
67
28
 
68
- void *git_failalloc_reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
69
- {
70
- GIT_UNUSED(ptr);
71
- GIT_UNUSED(nelem);
72
- GIT_UNUSED(elsize);
73
- GIT_UNUSED(file);
74
- GIT_UNUSED(line);
75
-
76
- return NULL;
77
- }
78
-
79
- void *git_failalloc_mallocarray(size_t nelem, size_t elsize, const char *file, int line)
80
- {
81
- GIT_UNUSED(nelem);
82
- GIT_UNUSED(elsize);
83
- GIT_UNUSED(file);
84
- GIT_UNUSED(line);
85
-
86
- return NULL;
87
- }
88
-
89
29
  void git_failalloc_free(void *ptr)
90
30
  {
91
31
  GIT_UNUSED(ptr);
@@ -11,13 +11,7 @@
11
11
  #include "git2_util.h"
12
12
 
13
13
  extern void *git_failalloc_malloc(size_t len, const char *file, int line);
14
- extern void *git_failalloc_calloc(size_t nelem, size_t elsize, const char *file, int line);
15
- extern char *git_failalloc_strdup(const char *str, const char *file, int line);
16
- extern char *git_failalloc_strndup(const char *str, size_t n, const char *file, int line);
17
- extern char *git_failalloc_substrdup(const char *start, size_t n, const char *file, int line);
18
14
  extern void *git_failalloc_realloc(void *ptr, size_t size, const char *file, int line);
19
- extern void *git_failalloc_reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line);
20
- extern void *git_failalloc_mallocarray(size_t nelem, size_t elsize, const char *file, int line);
21
15
  extern void git_failalloc_free(void *ptr);
22
16
 
23
17
  #endif
@@ -9,125 +9,18 @@
9
9
 
10
10
  static void *stdalloc__malloc(size_t len, const char *file, int line)
11
11
  {
12
- void *ptr;
13
-
14
- GIT_UNUSED(file);
15
- GIT_UNUSED(line);
16
-
17
- #ifdef GIT_DEBUG_STRICT_ALLOC
18
- if (!len)
19
- return NULL;
20
- #endif
21
-
22
- ptr = malloc(len);
23
-
24
- if (!ptr)
25
- git_error_set_oom();
26
-
27
- return ptr;
28
- }
29
-
30
- static void *stdalloc__calloc(size_t nelem, size_t elsize, const char *file, int line)
31
- {
32
- void *ptr;
33
-
34
- GIT_UNUSED(file);
35
- GIT_UNUSED(line);
36
-
37
- #ifdef GIT_DEBUG_STRICT_ALLOC
38
- if (!elsize || !nelem)
39
- return NULL;
40
- #endif
41
-
42
- ptr = calloc(nelem, elsize);
43
-
44
- if (!ptr)
45
- git_error_set_oom();
46
-
47
- return ptr;
48
- }
49
-
50
- static char *stdalloc__strdup(const char *str, const char *file, int line)
51
- {
52
- char *ptr;
53
-
54
12
  GIT_UNUSED(file);
55
13
  GIT_UNUSED(line);
56
14
 
57
- ptr = strdup(str);
58
-
59
- if (!ptr)
60
- git_error_set_oom();
61
-
62
- return ptr;
63
- }
64
-
65
- static char *stdalloc__strndup(const char *str, size_t n, const char *file, int line)
66
- {
67
- size_t length = 0, alloclength;
68
- char *ptr;
69
-
70
- length = p_strnlen(str, n);
71
-
72
- if (GIT_ADD_SIZET_OVERFLOW(&alloclength, length, 1) ||
73
- !(ptr = stdalloc__malloc(alloclength, file, line)))
74
- return NULL;
75
-
76
- if (length)
77
- memcpy(ptr, str, length);
78
-
79
- ptr[length] = '\0';
80
-
81
- return ptr;
82
- }
83
-
84
- static char *stdalloc__substrdup(const char *start, size_t n, const char *file, int line)
85
- {
86
- char *ptr;
87
- size_t alloclen;
88
-
89
- if (GIT_ADD_SIZET_OVERFLOW(&alloclen, n, 1) ||
90
- !(ptr = stdalloc__malloc(alloclen, file, line)))
91
- return NULL;
92
-
93
- memcpy(ptr, start, n);
94
- ptr[n] = '\0';
95
- return ptr;
15
+ return malloc(len);
96
16
  }
97
17
 
98
18
  static void *stdalloc__realloc(void *ptr, size_t size, const char *file, int line)
99
19
  {
100
- void *new_ptr;
101
-
102
20
  GIT_UNUSED(file);
103
21
  GIT_UNUSED(line);
104
22
 
105
- #ifdef GIT_DEBUG_STRICT_ALLOC
106
- if (!size)
107
- return NULL;
108
- #endif
109
-
110
- new_ptr = realloc(ptr, size);
111
-
112
- if (!new_ptr)
113
- git_error_set_oom();
114
-
115
- return new_ptr;
116
- }
117
-
118
- static void *stdalloc__reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
119
- {
120
- size_t newsize;
121
-
122
- if (GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize))
123
- return NULL;
124
-
125
- return stdalloc__realloc(ptr, newsize, file, line);
126
- }
127
-
128
- static void *stdalloc__mallocarray(size_t nelem, size_t elsize, const char *file, int line)
129
- {
130
- return stdalloc__reallocarray(NULL, nelem, elsize, file, line);
23
+ return realloc(ptr, size);
131
24
  }
132
25
 
133
26
  static void stdalloc__free(void *ptr)
@@ -138,13 +31,7 @@ static void stdalloc__free(void *ptr)
138
31
  int git_stdalloc_init_allocator(git_allocator *allocator)
139
32
  {
140
33
  allocator->gmalloc = stdalloc__malloc;
141
- allocator->gcalloc = stdalloc__calloc;
142
- allocator->gstrdup = stdalloc__strdup;
143
- allocator->gstrndup = stdalloc__strndup;
144
- allocator->gsubstrdup = stdalloc__substrdup;
145
34
  allocator->grealloc = stdalloc__realloc;
146
- allocator->greallocarray = stdalloc__reallocarray;
147
- allocator->gmallocarray = stdalloc__mallocarray;
148
35
  allocator->gfree = stdalloc__free;
149
36
  return 0;
150
37
  }
@@ -18,53 +18,6 @@ static void *leakcheck_malloc(size_t len, const char *file, int line)
18
18
  return ptr;
19
19
  }
20
20
 
21
- static void *leakcheck_calloc(size_t nelem, size_t elsize, const char *file, int line)
22
- {
23
- void *ptr = _calloc_dbg(nelem, elsize, _NORMAL_BLOCK, git_win32_leakcheck_stacktrace(1,file), line);
24
- if (!ptr) git_error_set_oom();
25
- return ptr;
26
- }
27
-
28
- static char *leakcheck_strdup(const char *str, const char *file, int line)
29
- {
30
- char *ptr = _strdup_dbg(str, _NORMAL_BLOCK, git_win32_leakcheck_stacktrace(1,file), line);
31
- if (!ptr) git_error_set_oom();
32
- return ptr;
33
- }
34
-
35
- static char *leakcheck_strndup(const char *str, size_t n, const char *file, int line)
36
- {
37
- size_t length = 0, alloclength;
38
- char *ptr;
39
-
40
- length = p_strnlen(str, n);
41
-
42
- if (GIT_ADD_SIZET_OVERFLOW(&alloclength, length, 1) ||
43
- !(ptr = leakcheck_malloc(alloclength, file, line)))
44
- return NULL;
45
-
46
- if (length)
47
- memcpy(ptr, str, length);
48
-
49
- ptr[length] = '\0';
50
-
51
- return ptr;
52
- }
53
-
54
- static char *leakcheck_substrdup(const char *start, size_t n, const char *file, int line)
55
- {
56
- char *ptr;
57
- size_t alloclen;
58
-
59
- if (GIT_ADD_SIZET_OVERFLOW(&alloclen, n, 1) ||
60
- !(ptr = leakcheck_malloc(alloclen, file, line)))
61
- return NULL;
62
-
63
- memcpy(ptr, start, n);
64
- ptr[n] = '\0';
65
- return ptr;
66
- }
67
-
68
21
  static void *leakcheck_realloc(void *ptr, size_t size, const char *file, int line)
69
22
  {
70
23
  void *new_ptr = _realloc_dbg(ptr, size, _NORMAL_BLOCK, git_win32_leakcheck_stacktrace(1,file), line);
@@ -72,21 +25,6 @@ static void *leakcheck_realloc(void *ptr, size_t size, const char *file, int lin
72
25
  return new_ptr;
73
26
  }
74
27
 
75
- static void *leakcheck_reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
76
- {
77
- size_t newsize;
78
-
79
- if (GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize))
80
- return NULL;
81
-
82
- return leakcheck_realloc(ptr, newsize, file, line);
83
- }
84
-
85
- static void *leakcheck_mallocarray(size_t nelem, size_t elsize, const char *file, int line)
86
- {
87
- return leakcheck_reallocarray(NULL, nelem, elsize, file, line);
88
- }
89
-
90
28
  static void leakcheck_free(void *ptr)
91
29
  {
92
30
  free(ptr);
@@ -95,13 +33,7 @@ static void leakcheck_free(void *ptr)
95
33
  int git_win32_leakcheck_init_allocator(git_allocator *allocator)
96
34
  {
97
35
  allocator->gmalloc = leakcheck_malloc;
98
- allocator->gcalloc = leakcheck_calloc;
99
- allocator->gstrdup = leakcheck_strdup;
100
- allocator->gstrndup = leakcheck_strndup;
101
- allocator->gsubstrdup = leakcheck_substrdup;
102
36
  allocator->grealloc = leakcheck_realloc;
103
- allocator->greallocarray = leakcheck_reallocarray;
104
- allocator->gmallocarray = leakcheck_mallocarray;
105
37
  allocator->gfree = leakcheck_free;
106
38
  return 0;
107
39
  }
@@ -33,44 +33,48 @@
33
33
  #define git_array_init_to_size(a, desired) \
34
34
  do { (a).size = 0; (a).asize = desired; (a).ptr = git__calloc(desired, sizeof(*(a).ptr)); } while (0)
35
35
 
36
+ #define git_array_dispose(a) \
37
+ do { git__free((a).ptr); } while (0)
38
+
36
39
  #define git_array_clear(a) \
37
40
  do { git__free((a).ptr); git_array_init(a); } while (0)
38
41
 
39
42
  #define GIT_ERROR_CHECK_ARRAY(a) GIT_ERROR_CHECK_ALLOC((a).ptr)
40
43
 
41
-
42
- typedef git_array_t(char) git_array_generic_t;
43
-
44
- /* use a generic array for growth, return 0 on success */
45
- GIT_INLINE(int) git_array_grow(void *_a, size_t item_size)
44
+ GIT_INLINE(void *) git_array__alloc(void *arr, size_t *size, size_t *asize, size_t item_size)
46
45
  {
47
- volatile git_array_generic_t *a = _a;
48
46
  size_t new_size;
49
- char *new_array;
47
+ void *new_array;
48
+
49
+ if (*size < *asize)
50
+ return arr;
50
51
 
51
- if (a->size < 8) {
52
+ if (*size < 8) {
52
53
  new_size = 8;
53
54
  } else {
54
- if (GIT_MULTIPLY_SIZET_OVERFLOW(&new_size, a->size, 3))
55
+ if (GIT_MULTIPLY_SIZET_OVERFLOW(&new_size, *asize, 3))
55
56
  goto on_oom;
57
+
56
58
  new_size /= 2;
57
59
  }
58
60
 
59
- if ((new_array = git__reallocarray(a->ptr, new_size, item_size)) == NULL)
61
+ if ((new_array = git__reallocarray(arr, new_size, item_size)) == NULL)
60
62
  goto on_oom;
61
63
 
62
- a->ptr = new_array;
63
- a->asize = new_size;
64
- return 0;
64
+ *asize = new_size;
65
+
66
+ return new_array;
65
67
 
66
68
  on_oom:
67
- git_array_clear(*a);
68
- return -1;
69
+ git__free(arr);
70
+ *size = 0;
71
+ *asize = 0;
72
+ return NULL;
69
73
  }
70
74
 
71
75
  #define git_array_alloc(a) \
72
- (((a).size < (a).asize || git_array_grow(&(a), sizeof(*(a).ptr)) == 0) ? \
73
- &(a).ptr[(a).size++] : (void *)NULL)
76
+ (((a).size < (a).asize || \
77
+ ((a).ptr = git_array__alloc((a).ptr, &(a).size, &(a).asize, sizeof(*(a).ptr))) != NULL) ? &(a).ptr[(a).size++] : (void *)NULL)
74
78
 
75
79
  #define git_array_last(a) ((a).size ? &(a).ptr[(a).size - 1] : (void *)NULL)
76
80
 
@@ -85,12 +89,14 @@ on_oom:
85
89
  #define git_array_foreach(a, i, element) \
86
90
  for ((i) = 0; (i) < (a).size && ((element) = &(a).ptr[(i)]); (i)++)
87
91
 
92
+ typedef int (*git_array_compare_cb)(const void *, const void *);
93
+
88
94
  GIT_INLINE(int) git_array__search(
89
95
  size_t *out,
90
96
  void *array_ptr,
91
97
  size_t item_size,
92
98
  size_t array_len,
93
- int (*compare)(const void *, const void *),
99
+ git_array_compare_cb compare,
94
100
  const void *key)
95
101
  {
96
102
  size_t lim;
@@ -43,8 +43,12 @@
43
43
  __typeof__(x) _unused __attribute__((unused)); \
44
44
  _unused = (x); \
45
45
  } while (0)
46
+ # define GIT_UNUSED_ARG __attribute__((unused))
47
+ # define GIT_UNUSED_FUNCTION __attribute__((unused))
46
48
  #else
47
49
  # define GIT_UNUSED(x) ((void)(x))
50
+ # define GIT_UNUSED_ARG
51
+ # define GIT_UNUSED_FUNCTION
48
52
  #endif
49
53
 
50
54
  /* Define the printf format specifier to use for size_t output */