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
@@ -9,6 +9,17 @@
9
9
  #ifndef PRIVATE_UTIL_H__
10
10
  #define PRIVATE_UTIL_H__
11
11
 
12
+ #include <stddef.h>
13
+ #include <stdint.h>
14
+
15
+ #if defined(_MSC_VER)
16
+ # define NTLM_INLINE(type) static __inline type
17
+ #elif defined(__GNUC__)
18
+ # define NTLM_INLINE(type) static __inline__ type
19
+ #else
20
+ # define NTLM_INLINE(type) static type
21
+ #endif
22
+
12
23
  extern void ntlm_memzero(void *data, size_t size);
13
24
  extern uint64_t ntlm_htonll(uint64_t value);
14
25
 
@@ -22,6 +22,7 @@ check_type_size("unsigned long long" UNSIGNED_LONG_LONG)
22
22
 
23
23
  disable_warnings(unused-function)
24
24
  disable_warnings(implicit-fallthrough)
25
+ disable_warnings(unused-but-set-variable)
25
26
 
26
27
  # User-configurable options
27
28
 
@@ -19,13 +19,13 @@ THE BASIC LIBRARY FUNCTIONS
19
19
  ---------------------------
20
20
 
21
21
  Written by: Philip Hazel
22
- Email local part: ph10
23
- Email domain: cam.ac.uk
22
+ Email local part: Philip.Hazel
23
+ Email domain: gmail.com
24
24
 
25
25
  University of Cambridge Computing Service,
26
26
  Cambridge, England.
27
27
 
28
- Copyright (c) 1997-2020 University of Cambridge
28
+ Copyright (c) 1997-2021 University of Cambridge
29
29
  All rights reserved.
30
30
 
31
31
 
@@ -36,7 +36,7 @@ Written by: Zoltan Herczeg
36
36
  Email local part: hzmester
37
37
  Email domain: freemail.hu
38
38
 
39
- Copyright(c) 2010-2020 Zoltan Herczeg
39
+ Copyright(c) 2010-2021 Zoltan Herczeg
40
40
  All rights reserved.
41
41
 
42
42
 
@@ -47,7 +47,7 @@ Written by: Zoltan Herczeg
47
47
  Email local part: hzmester
48
48
  Email domain: freemail.hu
49
49
 
50
- Copyright(c) 2009-2020 Zoltan Herczeg
50
+ Copyright(c) 2009-2021 Zoltan Herczeg
51
51
  All rights reserved.
52
52
 
53
53
 
@@ -42,9 +42,9 @@ POSSIBILITY OF SUCH DAMAGE.
42
42
  /* The current PCRE version information. */
43
43
 
44
44
  #define PCRE_MAJOR 8
45
- #define PCRE_MINOR 44
45
+ #define PCRE_MINOR 45
46
46
  #define PCRE_PRERELEASE
47
- #define PCRE_DATE 2020-02-12
47
+ #define PCRE_DATE 2021-06-15
48
48
 
49
49
  #define PCRE_EXP_DECL extern
50
50
 
@@ -6,7 +6,7 @@
6
6
  and semantics are as close as possible to those of the Perl 5 language.
7
7
 
8
8
  Written by Philip Hazel
9
- Copyright (c) 1997-2020 University of Cambridge
9
+ Copyright (c) 1997-2021 University of Cambridge
10
10
 
11
11
  -----------------------------------------------------------------------------
12
12
  Redistribution and use in source and binary forms, with or without
@@ -9104,6 +9104,8 @@ pcre_uchar cworkspace[COMPILE_WORK_SIZE];
9104
9104
  similar way to cworkspace, it can be expanded using malloc() if necessary. */
9105
9105
 
9106
9106
  named_group named_groups[NAMED_GROUP_LIST_SIZE];
9107
+ cd->named_groups = named_groups;
9108
+ cd->named_group_list_size = NAMED_GROUP_LIST_SIZE;
9107
9109
 
9108
9110
  /* Set this early so that early errors get offset 0. */
9109
9111
 
@@ -9377,8 +9379,6 @@ cd->hwm = cworkspace;
9377
9379
  cd->iscondassert = FALSE;
9378
9380
  cd->start_workspace = cworkspace;
9379
9381
  cd->workspace_size = COMPILE_WORK_SIZE;
9380
- cd->named_groups = named_groups;
9381
- cd->named_group_list_size = NAMED_GROUP_LIST_SIZE;
9382
9382
  cd->start_pattern = (const pcre_uchar *)pattern;
9383
9383
  cd->end_pattern = (const pcre_uchar *)(pattern + STRLEN_UC((const pcre_uchar *)pattern));
9384
9384
  cd->req_varyopt = 0;
@@ -9489,6 +9489,7 @@ if (cd->names_found > 0)
9489
9489
  add_name(cd, ng->name, ng->length, ng->number);
9490
9490
  if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE)
9491
9491
  (PUBL(free))((void *)cd->named_groups);
9492
+ cd->named_group_list_size = 0; /* So we don't free it twice */
9492
9493
  }
9493
9494
 
9494
9495
  /* Set up a starting, non-extracting bracket, then compile the expression. On
@@ -9639,6 +9640,8 @@ if (errorcode != 0)
9639
9640
  {
9640
9641
  (PUBL(free))(re);
9641
9642
  PCRE_EARLY_ERROR_RETURN:
9643
+ if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE)
9644
+ (PUBL(free))((void *)cd->named_groups);
9642
9645
  *erroroffset = (int)(ptr - (const pcre_uchar *)pattern);
9643
9646
  PCRE_EARLY_ERROR_RETURN2:
9644
9647
  *errorptr = find_error_text(errorcode);
@@ -6,7 +6,7 @@
6
6
  and semantics are as close as possible to those of the Perl 5 language.
7
7
 
8
8
  Written by Philip Hazel
9
- Copyright (c) 1997-2018 University of Cambridge
9
+ Copyright (c) 1997-2021 University of Cambridge
10
10
 
11
11
  -----------------------------------------------------------------------------
12
12
  Redistribution and use in source and binary forms, with or without
@@ -758,7 +758,7 @@ for (;;)
758
758
  md->mark = NULL; /* In case previously set by assertion */
759
759
  RMATCH(eptr, ecode + PRIV(OP_lengths)[*ecode] + ecode[1], offset_top, md,
760
760
  eptrb, RM55);
761
- if ((rrc == MATCH_MATCH || rrc == MATCH_ACCEPT) &&
761
+ if ((rrc == MATCH_MATCH || rrc == MATCH_ACCEPT || rrc == MATCH_KETRPOS) &&
762
762
  md->mark == NULL) md->mark = ecode + 2;
763
763
 
764
764
  /* A return of MATCH_SKIP_ARG means that matching failed at SKIP with an
@@ -0,0 +1,28 @@
1
+
2
+ file(GLOB SRC_XDIFF "*.c" "*.h")
3
+ list(SORT SRC_XDIFF)
4
+
5
+ add_library(xdiff OBJECT ${SRC_XDIFF})
6
+ target_include_directories(xdiff SYSTEM PRIVATE
7
+ "${PROJECT_SOURCE_DIR}/include"
8
+ "${PROJECT_SOURCE_DIR}/src/util"
9
+ "${PROJECT_BINARY_DIR}/src/util"
10
+ ${LIBGIT2_SYSTEM_INCLUDES}
11
+ ${LIBGIT2_DEPENDENCY_INCLUDES})
12
+
13
+ # the xdiff dependency is not (yet) warning-free, disable warnings
14
+ # as errors for the xdiff sources until we've sorted them out
15
+ if(MSVC)
16
+ set_source_files_properties(xdiffi.c PROPERTIES COMPILE_FLAGS -WX-)
17
+ set_source_files_properties(xemit.c PROPERTIES COMPILE_FLAGS -WX-)
18
+ set_source_files_properties(xhistogram.c PROPERTIES COMPILE_FLAGS -WX-)
19
+ set_source_files_properties(xmerge.c PROPERTIES COMPILE_FLAGS -WX-)
20
+ set_source_files_properties(xutils.c PROPERTIES COMPILE_FLAGS -WX-)
21
+ set_source_files_properties(xpatience.c PROPERTIES COMPILE_FLAGS -WX-)
22
+ else()
23
+ set_source_files_properties(xdiffi.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare -Wno-unused-parameter")
24
+ set_source_files_properties(xemit.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare -Wno-unused-parameter")
25
+ set_source_files_properties(xhistogram.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
26
+ set_source_files_properties(xutils.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
27
+ set_source_files_properties(xpatience.c PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
28
+ endif()
@@ -27,11 +27,14 @@
27
27
  # endif
28
28
  #endif
29
29
 
30
+ #define XDL_UNUSED GIT_UNUSED_ARG
31
+
30
32
  #define xdl_malloc(x) git__malloc(x)
33
+ #define xdl_calloc(n, sz) git__calloc(n, sz)
31
34
  #define xdl_free(ptr) git__free(ptr)
32
35
  #define xdl_realloc(ptr, x) git__realloc(ptr, x)
33
36
 
34
- #define XDL_BUG(msg) GIT_ASSERT(msg)
37
+ #define XDL_BUG(msg) GIT_ASSERT(!msg)
35
38
 
36
39
  #define xdl_regex_t git_regexp
37
40
  #define xdl_regmatch_t git_regmatch
@@ -315,16 +315,19 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
315
315
  long *kvd, *kvdf, *kvdb;
316
316
  xdalgoenv_t xenv;
317
317
  diffdata_t dd1, dd2;
318
+ int res;
318
319
 
319
- if (XDF_DIFF_ALG(xpp->flags) == XDF_PATIENCE_DIFF)
320
- return xdl_do_patience_diff(mf1, mf2, xpp, xe);
321
-
322
- if (XDF_DIFF_ALG(xpp->flags) == XDF_HISTOGRAM_DIFF)
323
- return xdl_do_histogram_diff(mf1, mf2, xpp, xe);
320
+ if (xdl_prepare_env(mf1, mf2, xpp, xe) < 0)
321
+ return -1;
324
322
 
325
- if (xdl_prepare_env(mf1, mf2, xpp, xe) < 0) {
323
+ if (XDF_DIFF_ALG(xpp->flags) == XDF_PATIENCE_DIFF) {
324
+ res = xdl_do_patience_diff(xpp, xe);
325
+ goto out;
326
+ }
326
327
 
327
- return -1;
328
+ if (XDF_DIFF_ALG(xpp->flags) == XDF_HISTOGRAM_DIFF) {
329
+ res = xdl_do_histogram_diff(xpp, xe);
330
+ goto out;
328
331
  }
329
332
 
330
333
  /*
@@ -334,7 +337,7 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
334
337
  * One is to store the forward path and one to store the backward path.
335
338
  */
336
339
  ndiags = xe->xdf1.nreff + xe->xdf2.nreff + 3;
337
- if (!(kvd = (long *) xdl_malloc((2 * ndiags + 2) * sizeof(long)))) {
340
+ if (!XDL_ALLOC_ARRAY(kvd, 2 * ndiags + 2)) {
338
341
 
339
342
  xdl_free_env(xe);
340
343
  return -1;
@@ -359,17 +362,15 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
359
362
  dd2.rchg = xe->xdf2.rchg;
360
363
  dd2.rindex = xe->xdf2.rindex;
361
364
 
362
- if (xdl_recs_cmp(&dd1, 0, dd1.nrec, &dd2, 0, dd2.nrec,
363
- kvdf, kvdb, (xpp->flags & XDF_NEED_MINIMAL) != 0, &xenv) < 0) {
364
-
365
- xdl_free(kvd);
366
- xdl_free_env(xe);
367
- return -1;
368
- }
369
-
365
+ res = xdl_recs_cmp(&dd1, 0, dd1.nrec, &dd2, 0, dd2.nrec,
366
+ kvdf, kvdb, (xpp->flags & XDF_NEED_MINIMAL) != 0,
367
+ &xenv);
370
368
  xdl_free(kvd);
369
+ out:
370
+ if (res < 0)
371
+ xdl_free_env(xe);
371
372
 
372
- return 0;
373
+ return res;
373
374
  }
374
375
 
375
376
 
@@ -972,7 +973,7 @@ void xdl_free_script(xdchange_t *xscr) {
972
973
  }
973
974
  }
974
975
 
975
- static int xdl_call_hunk_func(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
976
+ static int xdl_call_hunk_func(xdfenv_t *xe XDL_UNUSED, xdchange_t *xscr, xdemitcb_t *ecb,
976
977
  xdemitconf_t const *xecfg)
977
978
  {
978
979
  xdchange_t *xch, *xche;
@@ -56,9 +56,7 @@ int xdl_build_script(xdfenv_t *xe, xdchange_t **xscr);
56
56
  void xdl_free_script(xdchange_t *xscr);
57
57
  int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
58
58
  xdemitconf_t const *xecfg);
59
- int xdl_do_patience_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
60
- xdfenv_t *env);
61
- int xdl_do_histogram_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
62
- xdfenv_t *env);
59
+ int xdl_do_patience_diff(xpparam_t const *xpp, xdfenv_t *env);
60
+ int xdl_do_histogram_diff(xpparam_t const *xpp, xdfenv_t *env);
63
61
 
64
62
  #endif /* #if !defined(XDIFFI_H) */
@@ -65,7 +65,7 @@ xdchange_t *xdl_get_hunk(xdchange_t **xscr, xdemitconf_t const *xecfg)
65
65
  *xscr = xch;
66
66
  }
67
67
 
68
- if (*xscr == NULL)
68
+ if (!*xscr)
69
69
  return NULL;
70
70
 
71
71
  lxch = *xscr;
@@ -95,7 +95,7 @@ xdchange_t *xdl_get_hunk(xdchange_t **xscr, xdemitconf_t const *xecfg)
95
95
  }
96
96
 
97
97
 
98
- static long def_ff(const char *rec, long len, char *buf, long sz, void *priv)
98
+ static long def_ff(const char *rec, long len, char *buf, long sz)
99
99
  {
100
100
  if (len > 0 &&
101
101
  (isalpha((unsigned char)*rec) || /* identifier? */
@@ -117,7 +117,7 @@ static long match_func_rec(xdfile_t *xdf, xdemitconf_t const *xecfg, long ri,
117
117
  const char *rec;
118
118
  long len = xdl_get_rec(xdf, ri, &rec);
119
119
  if (!xecfg->find_func)
120
- return def_ff(rec, len, buf, sz, xecfg->find_func_priv);
120
+ return def_ff(rec, len, buf, sz);
121
121
  return xecfg->find_func(rec, len, buf, sz, xecfg->find_func_priv);
122
122
  }
123
123
 
@@ -251,7 +251,7 @@ static int find_lcs(xpparam_t const *xpp, xdfenv_t *env,
251
251
  int line1, int count1, int line2, int count2)
252
252
  {
253
253
  int b_ptr;
254
- int sz, ret = -1;
254
+ int ret = -1;
255
255
  struct histindex index;
256
256
 
257
257
  memset(&index, 0, sizeof(index));
@@ -265,23 +265,16 @@ static int find_lcs(xpparam_t const *xpp, xdfenv_t *env,
265
265
  index.rcha.head = NULL;
266
266
 
267
267
  index.table_bits = xdl_hashbits(count1);
268
- sz = index.records_size = 1 << index.table_bits;
269
- sz *= sizeof(struct record *);
270
- if (!(index.records = (struct record **) xdl_malloc(sz)))
268
+ index.records_size = 1 << index.table_bits;
269
+ if (!XDL_CALLOC_ARRAY(index.records, index.records_size))
271
270
  goto cleanup;
272
- memset(index.records, 0, sz);
273
271
 
274
- sz = index.line_map_size = count1;
275
- sz *= sizeof(struct record *);
276
- if (!(index.line_map = (struct record **) xdl_malloc(sz)))
272
+ index.line_map_size = count1;
273
+ if (!XDL_CALLOC_ARRAY(index.line_map, index.line_map_size))
277
274
  goto cleanup;
278
- memset(index.line_map, 0, sz);
279
275
 
280
- sz = index.line_map_size;
281
- sz *= sizeof(unsigned int);
282
- if (!(index.next_ptrs = (unsigned int *) xdl_malloc(sz)))
276
+ if (!XDL_CALLOC_ARRAY(index.next_ptrs, index.line_map_size))
283
277
  goto cleanup;
284
- memset(index.next_ptrs, 0, sz);
285
278
 
286
279
  /* lines / 4 + 1 comes from xprepare.c:xdl_prepare_ctx() */
287
280
  if (xdl_cha_init(&index.rcha, sizeof(struct record), count1 / 4 + 1) < 0)
@@ -369,12 +362,8 @@ out:
369
362
  return result;
370
363
  }
371
364
 
372
- int xdl_do_histogram_diff(mmfile_t *file1, mmfile_t *file2,
373
- xpparam_t const *xpp, xdfenv_t *env)
365
+ int xdl_do_histogram_diff(xpparam_t const *xpp, xdfenv_t *env)
374
366
  {
375
- if (xdl_prepare_env(file1, file2, xpp, env) < 0)
376
- return -1;
377
-
378
367
  return histogram_diff(xpp, env,
379
368
  env->xdf1.dstart + 1, env->xdf1.dend - env->xdf1.dstart + 1,
380
369
  env->xdf2.dstart + 1, env->xdf2.dend - env->xdf2.dstart + 1);
@@ -34,7 +34,6 @@
34
34
  #define XDL_ADDBITS(v,b) ((v) + ((v) >> (b)))
35
35
  #define XDL_MASKBITS(b) ((1UL << (b)) - 1)
36
36
  #define XDL_HASHLONG(v,b) (XDL_ADDBITS((unsigned long)(v), b) & XDL_MASKBITS(b))
37
- #define XDL_PTRFREE(p) do { if (p) { xdl_free(p); (p) = NULL; } } while (0)
38
37
  #define XDL_LE32_PUT(p, v) \
39
38
  do { \
40
39
  unsigned char *__p = (unsigned char *) (p); \
@@ -50,5 +49,23 @@ do { \
50
49
  ((unsigned long) __p[2]) << 16 | ((unsigned long) __p[3]) << 24; \
51
50
  } while (0)
52
51
 
52
+ /* Allocate an array of nr elements, returns NULL on failure */
53
+ #define XDL_ALLOC_ARRAY(p, nr) \
54
+ ((p) = SIZE_MAX / sizeof(*(p)) >= (size_t)(nr) \
55
+ ? xdl_malloc((nr) * sizeof(*(p))) \
56
+ : NULL)
57
+
58
+ /* Allocate an array of nr zeroed out elements, returns NULL on failure */
59
+ #define XDL_CALLOC_ARRAY(p, nr) ((p) = xdl_calloc(nr, sizeof(*(p))))
60
+
61
+ /*
62
+ * Ensure array p can accommodate at least nr elements, growing the
63
+ * array and updating alloc (which is the number of allocated
64
+ * elements) as necessary. Frees p and returns -1 on failure, returns
65
+ * 0 on success
66
+ */
67
+ #define XDL_ALLOC_GROW(p, nr, alloc) \
68
+ (-!((nr) <= (alloc) || \
69
+ ((p) = xdl_alloc_grow_helper((p), (nr), &(alloc), sizeof(*(p))))))
53
70
 
54
71
  #endif /* #if !defined(XMACROS_H) */
@@ -684,42 +684,42 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
684
684
  int xdl_merge(mmfile_t *orig, mmfile_t *mf1, mmfile_t *mf2,
685
685
  xmparam_t const *xmp, mmbuffer_t *result)
686
686
  {
687
- xdchange_t *xscr1, *xscr2;
687
+ xdchange_t *xscr1 = NULL, *xscr2 = NULL;
688
688
  xdfenv_t xe1, xe2;
689
- int status;
689
+ int status = -1;
690
690
  xpparam_t const *xpp = &xmp->xpp;
691
691
 
692
692
  result->ptr = NULL;
693
693
  result->size = 0;
694
694
 
695
- if (xdl_do_diff(orig, mf1, xpp, &xe1) < 0) {
695
+ if (xdl_do_diff(orig, mf1, xpp, &xe1) < 0)
696
696
  return -1;
697
- }
698
- if (xdl_do_diff(orig, mf2, xpp, &xe2) < 0) {
699
- xdl_free_env(&xe1);
700
- return -1;
701
- }
697
+
698
+ if (xdl_do_diff(orig, mf2, xpp, &xe2) < 0)
699
+ goto free_xe1; /* avoid double free of xe2 */
700
+
702
701
  if (xdl_change_compact(&xe1.xdf1, &xe1.xdf2, xpp->flags) < 0 ||
703
702
  xdl_change_compact(&xe1.xdf2, &xe1.xdf1, xpp->flags) < 0 ||
704
- xdl_build_script(&xe1, &xscr1) < 0) {
705
- xdl_free_env(&xe1);
706
- return -1;
707
- }
703
+ xdl_build_script(&xe1, &xscr1) < 0)
704
+ goto out;
705
+
708
706
  if (xdl_change_compact(&xe2.xdf1, &xe2.xdf2, xpp->flags) < 0 ||
709
707
  xdl_change_compact(&xe2.xdf2, &xe2.xdf1, xpp->flags) < 0 ||
710
- xdl_build_script(&xe2, &xscr2) < 0) {
711
- xdl_free_script(xscr1);
712
- xdl_free_env(&xe1);
713
- xdl_free_env(&xe2);
714
- return -1;
715
- }
716
- status = 0;
708
+ xdl_build_script(&xe2, &xscr2) < 0)
709
+ goto out;
710
+
717
711
  if (!xscr1) {
718
712
  result->ptr = xdl_malloc(mf2->size);
713
+ if (!result->ptr)
714
+ goto out;
715
+ status = 0;
719
716
  memcpy(result->ptr, mf2->ptr, mf2->size);
720
717
  result->size = mf2->size;
721
718
  } else if (!xscr2) {
722
719
  result->ptr = xdl_malloc(mf1->size);
720
+ if (!result->ptr)
721
+ goto out;
722
+ status = 0;
723
723
  memcpy(result->ptr, mf1->ptr, mf1->size);
724
724
  result->size = mf1->size;
725
725
  } else {
@@ -727,11 +727,13 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, mmfile_t *mf2,
727
727
  &xe2, xscr2,
728
728
  xmp, result);
729
729
  }
730
+ out:
730
731
  xdl_free_script(xscr1);
731
732
  xdl_free_script(xscr2);
732
733
 
733
- xdl_free_env(&xe1);
734
734
  xdl_free_env(&xe2);
735
+ free_xe1:
736
+ xdl_free_env(&xe1);
735
737
 
736
738
  return status;
737
739
  }
@@ -69,7 +69,6 @@ struct hashmap {
69
69
  } *entries, *first, *last;
70
70
  /* were common records found? */
71
71
  unsigned long has_matches;
72
- mmfile_t *file1, *file2;
73
72
  xdfenv_t *env;
74
73
  xpparam_t const *xpp;
75
74
  };
@@ -139,23 +138,17 @@ static void insert_record(xpparam_t const *xpp, int line, struct hashmap *map,
139
138
  *
140
139
  * It is assumed that env has been prepared using xdl_prepare().
141
140
  */
142
- static int fill_hashmap(mmfile_t *file1, mmfile_t *file2,
143
- xpparam_t const *xpp, xdfenv_t *env,
141
+ static int fill_hashmap(xpparam_t const *xpp, xdfenv_t *env,
144
142
  struct hashmap *result,
145
143
  int line1, int count1, int line2, int count2)
146
144
  {
147
- result->file1 = file1;
148
- result->file2 = file2;
149
145
  result->xpp = xpp;
150
146
  result->env = env;
151
147
 
152
148
  /* We know exactly how large we want the hash map */
153
149
  result->alloc = count1 * 2;
154
- result->entries = (struct entry *)
155
- xdl_malloc(result->alloc * sizeof(struct entry));
156
- if (!result->entries)
150
+ if (!XDL_CALLOC_ARRAY(result->entries, result->alloc))
157
151
  return -1;
158
- memset(result->entries, 0, result->alloc * sizeof(struct entry));
159
152
 
160
153
  /* First, fill with entries from the first file */
161
154
  while (count1--)
@@ -198,9 +191,9 @@ static int binary_search(struct entry **sequence, int longest,
198
191
  * item per sequence length: the sequence with the smallest last
199
192
  * element (in terms of line2).
200
193
  */
201
- static struct entry *find_longest_common_sequence(struct hashmap *map)
194
+ static int find_longest_common_sequence(struct hashmap *map, struct entry **res)
202
195
  {
203
- struct entry **sequence = xdl_malloc(map->nr * sizeof(struct entry *));
196
+ struct entry **sequence;
204
197
  int longest = 0, i;
205
198
  struct entry *entry;
206
199
 
@@ -211,6 +204,9 @@ static struct entry *find_longest_common_sequence(struct hashmap *map)
211
204
  */
212
205
  int anchor_i = -1;
213
206
 
207
+ if (!XDL_ALLOC_ARRAY(sequence, map->nr))
208
+ return -1;
209
+
214
210
  for (entry = map->first; entry; entry = entry->next) {
215
211
  if (!entry->line2 || entry->line2 == NON_UNIQUE)
216
212
  continue;
@@ -230,8 +226,9 @@ static struct entry *find_longest_common_sequence(struct hashmap *map)
230
226
 
231
227
  /* No common unique lines were found */
232
228
  if (!longest) {
229
+ *res = NULL;
233
230
  xdl_free(sequence);
234
- return NULL;
231
+ return 0;
235
232
  }
236
233
 
237
234
  /* Iterate starting at the last element, adjusting the "next" members */
@@ -241,8 +238,9 @@ static struct entry *find_longest_common_sequence(struct hashmap *map)
241
238
  entry->previous->next = entry;
242
239
  entry = entry->previous;
243
240
  }
241
+ *res = entry;
244
242
  xdl_free(sequence);
245
- return entry;
243
+ return 0;
246
244
  }
247
245
 
248
246
  static int match(struct hashmap *map, int line1, int line2)
@@ -252,8 +250,7 @@ static int match(struct hashmap *map, int line1, int line2)
252
250
  return record1->ha == record2->ha;
253
251
  }
254
252
 
255
- static int patience_diff(mmfile_t *file1, mmfile_t *file2,
256
- xpparam_t const *xpp, xdfenv_t *env,
253
+ static int patience_diff(xpparam_t const *xpp, xdfenv_t *env,
257
254
  int line1, int count1, int line2, int count2);
258
255
 
259
256
  static int walk_common_sequence(struct hashmap *map, struct entry *first,
@@ -284,8 +281,7 @@ static int walk_common_sequence(struct hashmap *map, struct entry *first,
284
281
 
285
282
  /* Recurse */
286
283
  if (next1 > line1 || next2 > line2) {
287
- if (patience_diff(map->file1, map->file2,
288
- map->xpp, map->env,
284
+ if (patience_diff(map->xpp, map->env,
289
285
  line1, next1 - line1,
290
286
  line2, next2 - line2))
291
287
  return -1;
@@ -324,8 +320,7 @@ static int fall_back_to_classic_diff(struct hashmap *map,
324
320
  *
325
321
  * This function assumes that env was prepared with xdl_prepare_env().
326
322
  */
327
- static int patience_diff(mmfile_t *file1, mmfile_t *file2,
328
- xpparam_t const *xpp, xdfenv_t *env,
323
+ static int patience_diff(xpparam_t const *xpp, xdfenv_t *env,
329
324
  int line1, int count1, int line2, int count2)
330
325
  {
331
326
  struct hashmap map;
@@ -344,7 +339,7 @@ static int patience_diff(mmfile_t *file1, mmfile_t *file2,
344
339
  }
345
340
 
346
341
  memset(&map, 0, sizeof(map));
347
- if (fill_hashmap(file1, file2, xpp, env, &map,
342
+ if (fill_hashmap(xpp, env, &map,
348
343
  line1, count1, line2, count2))
349
344
  return -1;
350
345
 
@@ -358,25 +353,21 @@ static int patience_diff(mmfile_t *file1, mmfile_t *file2,
358
353
  return 0;
359
354
  }
360
355
 
361
- first = find_longest_common_sequence(&map);
356
+ result = find_longest_common_sequence(&map, &first);
357
+ if (result)
358
+ goto out;
362
359
  if (first)
363
360
  result = walk_common_sequence(&map, first,
364
361
  line1, count1, line2, count2);
365
362
  else
366
363
  result = fall_back_to_classic_diff(&map,
367
364
  line1, count1, line2, count2);
368
-
365
+ out:
369
366
  xdl_free(map.entries);
370
367
  return result;
371
368
  }
372
369
 
373
- int xdl_do_patience_diff(mmfile_t *file1, mmfile_t *file2,
374
- xpparam_t const *xpp, xdfenv_t *env)
370
+ int xdl_do_patience_diff(xpparam_t const *xpp, xdfenv_t *env)
375
371
  {
376
- if (xdl_prepare_env(file1, file2, xpp, env) < 0)
377
- return -1;
378
-
379
- /* environment is cleaned up in xdl_diff() */
380
- return patience_diff(file1, file2, xpp, env,
381
- 1, env->xdf1.nrec, 1, env->xdf2.nrec);
372
+ return patience_diff(xpp, env, 1, env->xdf1.nrec, 1, env->xdf2.nrec);
382
373
  }