rugged 0.27.7 → 0.27.10

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 (409) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +99 -51
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
  8. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
  9. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  10. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  11. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  12. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  13. data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
  14. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  15. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  16. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  17. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  18. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  19. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  20. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  21. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  22. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  23. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
  24. data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
  25. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  27. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  28. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  29. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  30. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  31. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  32. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
  33. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  34. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  35. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  36. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  37. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  38. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  39. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  40. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  42. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  43. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  44. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  45. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  46. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  47. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  48. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  49. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  50. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  51. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  52. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  53. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  54. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  55. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  56. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  57. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  58. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  59. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  60. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  61. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  62. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  63. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  64. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  65. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  66. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  67. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  68. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  69. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  70. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  71. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  72. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  73. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  74. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  75. data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
  76. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
  77. data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
  78. data/vendor/libgit2/deps/zlib/COPYING +27 -0
  79. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  80. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  81. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  82. data/vendor/libgit2/include/git2/apply.h +149 -0
  83. data/vendor/libgit2/include/git2/attr.h +20 -13
  84. data/vendor/libgit2/include/git2/blame.h +4 -4
  85. data/vendor/libgit2/include/git2/blob.h +44 -12
  86. data/vendor/libgit2/include/git2/buffer.h +20 -26
  87. data/vendor/libgit2/include/git2/cert.h +135 -0
  88. data/vendor/libgit2/include/git2/checkout.h +53 -21
  89. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  90. data/vendor/libgit2/include/git2/clone.h +5 -5
  91. data/vendor/libgit2/include/git2/commit.h +25 -3
  92. data/vendor/libgit2/include/git2/common.h +35 -10
  93. data/vendor/libgit2/include/git2/config.h +29 -19
  94. data/vendor/libgit2/include/git2/cred.h +308 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  96. data/vendor/libgit2/include/git2/describe.h +4 -4
  97. data/vendor/libgit2/include/git2/diff.h +177 -135
  98. data/vendor/libgit2/include/git2/errors.h +53 -46
  99. data/vendor/libgit2/include/git2/filter.h +8 -0
  100. data/vendor/libgit2/include/git2/index.h +74 -52
  101. data/vendor/libgit2/include/git2/indexer.h +76 -6
  102. data/vendor/libgit2/include/git2/merge.h +25 -10
  103. data/vendor/libgit2/include/git2/net.h +0 -5
  104. data/vendor/libgit2/include/git2/notes.h +1 -1
  105. data/vendor/libgit2/include/git2/object.h +17 -29
  106. data/vendor/libgit2/include/git2/odb.h +12 -11
  107. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  108. data/vendor/libgit2/include/git2/oid.h +2 -2
  109. data/vendor/libgit2/include/git2/pack.h +14 -3
  110. data/vendor/libgit2/include/git2/proxy.h +5 -3
  111. data/vendor/libgit2/include/git2/rebase.h +46 -2
  112. data/vendor/libgit2/include/git2/refs.h +34 -16
  113. data/vendor/libgit2/include/git2/remote.h +111 -14
  114. data/vendor/libgit2/include/git2/repository.h +69 -34
  115. data/vendor/libgit2/include/git2/revert.h +1 -1
  116. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  117. data/vendor/libgit2/include/git2/signature.h +2 -2
  118. data/vendor/libgit2/include/git2/stash.h +5 -5
  119. data/vendor/libgit2/include/git2/status.h +26 -17
  120. data/vendor/libgit2/include/git2/submodule.h +23 -6
  121. data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
  122. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  123. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  124. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  125. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  126. data/vendor/libgit2/include/git2/sys/merge.h +3 -3
  127. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  128. data/vendor/libgit2/include/git2/sys/path.h +14 -5
  129. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  130. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  131. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  132. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  133. data/vendor/libgit2/include/git2/tag.h +13 -4
  134. data/vendor/libgit2/include/git2/trace.h +2 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -311
  136. data/vendor/libgit2/include/git2/tree.h +4 -4
  137. data/vendor/libgit2/include/git2/types.h +25 -106
  138. data/vendor/libgit2/include/git2/version.h +3 -3
  139. data/vendor/libgit2/include/git2/worktree.h +5 -5
  140. data/vendor/libgit2/include/git2.h +4 -0
  141. data/vendor/libgit2/src/CMakeLists.txt +104 -235
  142. data/vendor/libgit2/src/alloc.c +14 -18
  143. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
  144. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  145. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  146. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  147. data/vendor/libgit2/src/annotated_commit.c +18 -11
  148. data/vendor/libgit2/src/apply.c +535 -28
  149. data/vendor/libgit2/src/apply.h +3 -1
  150. data/vendor/libgit2/src/array.h +2 -2
  151. data/vendor/libgit2/src/attr.c +77 -71
  152. data/vendor/libgit2/src/attr_file.c +203 -117
  153. data/vendor/libgit2/src/attr_file.h +9 -9
  154. data/vendor/libgit2/src/attrcache.c +49 -51
  155. data/vendor/libgit2/src/attrcache.h +2 -1
  156. data/vendor/libgit2/src/blame.c +38 -18
  157. data/vendor/libgit2/src/blame.h +1 -1
  158. data/vendor/libgit2/src/blame_git.c +29 -15
  159. data/vendor/libgit2/src/blob.c +123 -37
  160. data/vendor/libgit2/src/blob.h +19 -2
  161. data/vendor/libgit2/src/branch.c +47 -23
  162. data/vendor/libgit2/src/buf_text.c +7 -6
  163. data/vendor/libgit2/src/buffer.c +60 -53
  164. data/vendor/libgit2/src/cache.c +38 -45
  165. data/vendor/libgit2/src/cache.h +3 -3
  166. data/vendor/libgit2/src/cc-compat.h +20 -3
  167. data/vendor/libgit2/src/checkout.c +77 -67
  168. data/vendor/libgit2/src/cherrypick.c +12 -6
  169. data/vendor/libgit2/src/clone.c +36 -14
  170. data/vendor/libgit2/src/clone.h +4 -0
  171. data/vendor/libgit2/src/commit.c +103 -48
  172. data/vendor/libgit2/src/commit.h +7 -0
  173. data/vendor/libgit2/src/commit_list.c +36 -78
  174. data/vendor/libgit2/src/commit_list.h +2 -2
  175. data/vendor/libgit2/src/common.h +24 -90
  176. data/vendor/libgit2/src/config.c +203 -176
  177. data/vendor/libgit2/src/config.h +8 -20
  178. data/vendor/libgit2/src/config_backend.h +96 -0
  179. data/vendor/libgit2/src/config_cache.c +41 -35
  180. data/vendor/libgit2/src/config_entries.c +229 -0
  181. data/vendor/libgit2/src/config_entries.h +24 -0
  182. data/vendor/libgit2/src/config_file.c +422 -680
  183. data/vendor/libgit2/src/config_mem.c +220 -0
  184. data/vendor/libgit2/src/config_parse.c +96 -68
  185. data/vendor/libgit2/src/config_parse.h +15 -14
  186. data/vendor/libgit2/src/config_snapshot.c +206 -0
  187. data/vendor/libgit2/src/crlf.c +219 -196
  188. data/vendor/libgit2/src/delta.c +25 -18
  189. data/vendor/libgit2/src/describe.c +42 -41
  190. data/vendor/libgit2/src/diff.c +52 -67
  191. data/vendor/libgit2/src/diff.h +2 -1
  192. data/vendor/libgit2/src/diff_driver.c +44 -46
  193. data/vendor/libgit2/src/diff_file.c +16 -14
  194. data/vendor/libgit2/src/diff_file.h +1 -1
  195. data/vendor/libgit2/src/diff_generate.c +158 -103
  196. data/vendor/libgit2/src/diff_generate.h +3 -3
  197. data/vendor/libgit2/src/diff_parse.c +4 -4
  198. data/vendor/libgit2/src/diff_print.c +34 -22
  199. data/vendor/libgit2/src/diff_stats.c +22 -7
  200. data/vendor/libgit2/src/diff_tform.c +18 -16
  201. data/vendor/libgit2/src/diff_xdiff.c +3 -3
  202. data/vendor/libgit2/src/errors.c +51 -39
  203. data/vendor/libgit2/src/errors.h +81 -0
  204. data/vendor/libgit2/src/features.h.in +9 -3
  205. data/vendor/libgit2/src/fetch.c +8 -3
  206. data/vendor/libgit2/src/fetchhead.c +12 -12
  207. data/vendor/libgit2/src/filebuf.c +28 -32
  208. data/vendor/libgit2/src/filebuf.h +2 -2
  209. data/vendor/libgit2/src/filter.c +47 -33
  210. data/vendor/libgit2/src/filter.h +0 -10
  211. data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
  212. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  213. data/vendor/libgit2/src/global.c +35 -55
  214. data/vendor/libgit2/src/global.h +0 -2
  215. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  216. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  217. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  218. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  219. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  220. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  221. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  222. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
  223. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  224. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  225. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  226. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  227. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  228. data/vendor/libgit2/src/hash/sha1.h +38 -0
  229. data/vendor/libgit2/src/hash.c +61 -0
  230. data/vendor/libgit2/src/hash.h +20 -21
  231. data/vendor/libgit2/src/hashsig.c +5 -5
  232. data/vendor/libgit2/src/idxmap.c +107 -61
  233. data/vendor/libgit2/src/idxmap.h +153 -31
  234. data/vendor/libgit2/src/ignore.c +38 -42
  235. data/vendor/libgit2/src/index.c +264 -199
  236. data/vendor/libgit2/src/index.h +7 -1
  237. data/vendor/libgit2/src/indexer.c +338 -167
  238. data/vendor/libgit2/src/integer.h +71 -26
  239. data/vendor/libgit2/src/iterator.c +134 -62
  240. data/vendor/libgit2/src/iterator.h +15 -0
  241. data/vendor/libgit2/src/mailmap.c +8 -8
  242. data/vendor/libgit2/src/map.h +1 -1
  243. data/vendor/libgit2/src/merge.c +137 -93
  244. data/vendor/libgit2/src/merge_driver.c +11 -11
  245. data/vendor/libgit2/src/merge_file.c +2 -2
  246. data/vendor/libgit2/src/mwindow.c +24 -29
  247. data/vendor/libgit2/src/mwindow.h +4 -4
  248. data/vendor/libgit2/src/net.c +184 -0
  249. data/vendor/libgit2/src/net.h +36 -0
  250. data/vendor/libgit2/src/netops.c +55 -156
  251. data/vendor/libgit2/src/netops.h +3 -23
  252. data/vendor/libgit2/src/notes.c +14 -9
  253. data/vendor/libgit2/src/object.c +120 -69
  254. data/vendor/libgit2/src/object.h +22 -9
  255. data/vendor/libgit2/src/object_api.c +8 -8
  256. data/vendor/libgit2/src/odb.c +111 -88
  257. data/vendor/libgit2/src/odb.h +8 -7
  258. data/vendor/libgit2/src/odb_loose.c +58 -47
  259. data/vendor/libgit2/src/odb_mempack.c +21 -34
  260. data/vendor/libgit2/src/odb_pack.c +17 -13
  261. data/vendor/libgit2/src/offmap.c +53 -35
  262. data/vendor/libgit2/src/offmap.h +108 -21
  263. data/vendor/libgit2/src/oid.c +12 -7
  264. data/vendor/libgit2/src/oidmap.c +49 -47
  265. data/vendor/libgit2/src/oidmap.h +101 -24
  266. data/vendor/libgit2/src/pack-objects.c +87 -86
  267. data/vendor/libgit2/src/pack-objects.h +2 -8
  268. data/vendor/libgit2/src/pack.c +94 -96
  269. data/vendor/libgit2/src/pack.h +16 -18
  270. data/vendor/libgit2/src/parse.c +17 -4
  271. data/vendor/libgit2/src/parse.h +3 -3
  272. data/vendor/libgit2/src/patch.c +3 -3
  273. data/vendor/libgit2/src/patch_generate.c +18 -18
  274. data/vendor/libgit2/src/patch_parse.c +147 -79
  275. data/vendor/libgit2/src/path.c +207 -62
  276. data/vendor/libgit2/src/path.h +14 -0
  277. data/vendor/libgit2/src/pathspec.c +18 -18
  278. data/vendor/libgit2/src/pool.c +26 -22
  279. data/vendor/libgit2/src/pool.h +7 -7
  280. data/vendor/libgit2/src/posix.c +10 -10
  281. data/vendor/libgit2/src/posix.h +12 -1
  282. data/vendor/libgit2/src/proxy.c +8 -3
  283. data/vendor/libgit2/src/push.c +35 -29
  284. data/vendor/libgit2/src/push.h +2 -1
  285. data/vendor/libgit2/src/reader.c +265 -0
  286. data/vendor/libgit2/src/reader.h +107 -0
  287. data/vendor/libgit2/src/rebase.c +97 -38
  288. data/vendor/libgit2/src/refdb.c +15 -3
  289. data/vendor/libgit2/src/refdb_fs.c +318 -222
  290. data/vendor/libgit2/src/reflog.c +13 -15
  291. data/vendor/libgit2/src/refs.c +122 -89
  292. data/vendor/libgit2/src/refs.h +5 -3
  293. data/vendor/libgit2/src/refspec.c +27 -33
  294. data/vendor/libgit2/src/regexp.c +221 -0
  295. data/vendor/libgit2/src/regexp.h +97 -0
  296. data/vendor/libgit2/src/remote.c +229 -178
  297. data/vendor/libgit2/src/remote.h +11 -2
  298. data/vendor/libgit2/src/repository.c +227 -172
  299. data/vendor/libgit2/src/repository.h +52 -40
  300. data/vendor/libgit2/src/reset.c +7 -7
  301. data/vendor/libgit2/src/revert.c +11 -6
  302. data/vendor/libgit2/src/revparse.c +46 -46
  303. data/vendor/libgit2/src/revwalk.c +89 -54
  304. data/vendor/libgit2/src/revwalk.h +20 -0
  305. data/vendor/libgit2/src/settings.c +22 -9
  306. data/vendor/libgit2/src/signature.c +15 -13
  307. data/vendor/libgit2/src/sortedcache.c +22 -36
  308. data/vendor/libgit2/src/sortedcache.h +1 -1
  309. data/vendor/libgit2/src/stash.c +56 -76
  310. data/vendor/libgit2/src/status.c +27 -21
  311. data/vendor/libgit2/src/stream.h +17 -2
  312. data/vendor/libgit2/src/streams/mbedtls.c +100 -80
  313. data/vendor/libgit2/src/streams/mbedtls.h +5 -2
  314. data/vendor/libgit2/src/streams/openssl.c +93 -81
  315. data/vendor/libgit2/src/streams/openssl.h +5 -2
  316. data/vendor/libgit2/src/streams/registry.c +118 -0
  317. data/vendor/libgit2/src/streams/registry.h +19 -0
  318. data/vendor/libgit2/src/streams/socket.c +55 -30
  319. data/vendor/libgit2/src/streams/stransport.c +57 -32
  320. data/vendor/libgit2/src/streams/stransport.h +5 -0
  321. data/vendor/libgit2/src/streams/tls.c +48 -20
  322. data/vendor/libgit2/src/streams/tls.h +12 -4
  323. data/vendor/libgit2/src/strmap.c +47 -74
  324. data/vendor/libgit2/src/strmap.h +108 -33
  325. data/vendor/libgit2/src/submodule.c +190 -169
  326. data/vendor/libgit2/src/submodule.h +1 -1
  327. data/vendor/libgit2/src/sysdir.c +25 -15
  328. data/vendor/libgit2/src/tag.c +39 -26
  329. data/vendor/libgit2/src/tag.h +2 -1
  330. data/vendor/libgit2/src/trace.c +2 -2
  331. data/vendor/libgit2/src/trace.h +2 -2
  332. data/vendor/libgit2/src/trailer.c +46 -32
  333. data/vendor/libgit2/src/transaction.c +30 -29
  334. data/vendor/libgit2/src/transport.c +3 -3
  335. data/vendor/libgit2/src/transports/auth.c +14 -10
  336. data/vendor/libgit2/src/transports/auth.h +10 -3
  337. data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
  338. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  339. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  340. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  341. data/vendor/libgit2/src/transports/cred.c +24 -24
  342. data/vendor/libgit2/src/transports/git.c +25 -30
  343. data/vendor/libgit2/src/transports/http.c +871 -335
  344. data/vendor/libgit2/src/transports/http.h +2 -0
  345. data/vendor/libgit2/src/transports/local.c +28 -28
  346. data/vendor/libgit2/src/transports/smart.c +64 -46
  347. data/vendor/libgit2/src/transports/smart.h +5 -6
  348. data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
  349. data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
  350. data/vendor/libgit2/src/transports/ssh.c +76 -65
  351. data/vendor/libgit2/src/transports/winhttp.c +328 -319
  352. data/vendor/libgit2/src/tree-cache.c +21 -14
  353. data/vendor/libgit2/src/tree.c +119 -112
  354. data/vendor/libgit2/src/tree.h +1 -0
  355. data/vendor/libgit2/src/unix/map.c +3 -3
  356. data/vendor/libgit2/src/unix/posix.h +1 -11
  357. data/vendor/libgit2/src/userdiff.h +3 -1
  358. data/vendor/libgit2/src/util.c +154 -93
  359. data/vendor/libgit2/src/util.h +19 -23
  360. data/vendor/libgit2/src/vector.c +15 -10
  361. data/vendor/libgit2/src/wildmatch.c +320 -0
  362. data/vendor/libgit2/src/wildmatch.h +23 -0
  363. data/vendor/libgit2/src/win32/dir.c +3 -3
  364. data/vendor/libgit2/src/win32/findfile.c +1 -1
  365. data/vendor/libgit2/src/win32/map.c +9 -11
  366. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  367. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  368. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  369. data/vendor/libgit2/src/win32/posix.h +1 -4
  370. data/vendor/libgit2/src/win32/posix_w32.c +69 -44
  371. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  372. data/vendor/libgit2/src/win32/thread.c +5 -10
  373. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  374. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  375. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
  376. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  377. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  378. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  379. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  380. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  381. data/vendor/libgit2/src/worktree.c +44 -30
  382. data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
  383. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  384. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  385. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  386. data/vendor/libgit2/src/zstream.c +4 -4
  387. metadata +115 -38
  388. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  389. data/vendor/libgit2/deps/regex/config.h +0 -7
  390. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  391. data/vendor/libgit2/deps/regex/regex.c +0 -92
  392. data/vendor/libgit2/deps/regex/regex.h +0 -582
  393. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  394. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  395. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  396. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  397. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  398. data/vendor/libgit2/libgit2.pc.in +0 -13
  399. data/vendor/libgit2/src/config_file.h +0 -73
  400. data/vendor/libgit2/src/fnmatch.c +0 -248
  401. data/vendor/libgit2/src/fnmatch.h +0 -48
  402. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  403. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  404. data/vendor/libgit2/src/streams/curl.c +0 -385
  405. data/vendor/libgit2/src/streams/curl.h +0 -17
  406. /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  407. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  408. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  409. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
@@ -33,7 +33,19 @@ typedef struct {
33
33
  char *old_prefix, *new_prefix;
34
34
  } git_patch_parsed;
35
35
 
36
- static int header_path_len(git_patch_parse_ctx *ctx)
36
+ static int git_parse_err(const char *fmt, ...) GIT_FORMAT_PRINTF(1, 2);
37
+ static int git_parse_err(const char *fmt, ...)
38
+ {
39
+ va_list ap;
40
+
41
+ va_start(ap, fmt);
42
+ git_error_vset(GIT_ERROR_PATCH, fmt, ap);
43
+ va_end(ap);
44
+
45
+ return -1;
46
+ }
47
+
48
+ static size_t header_path_len(git_patch_parse_ctx *ctx)
37
49
  {
38
50
  bool inquote = 0;
39
51
  bool quoted = git_parse_ctx_contains_s(&ctx->parse_ctx, "\"");
@@ -58,31 +70,36 @@ static int parse_header_path_buf(git_buf *path, git_patch_parse_ctx *ctx, size_t
58
70
  int error;
59
71
 
60
72
  if ((error = git_buf_put(path, ctx->parse_ctx.line, path_len)) < 0)
61
- goto done;
73
+ return error;
62
74
 
63
75
  git_parse_advance_chars(&ctx->parse_ctx, path_len);
64
76
 
65
77
  git_buf_rtrim(path);
66
78
 
67
- if (path->size > 0 && path->ptr[0] == '"')
68
- error = git_buf_unquote(path);
69
-
70
- if (error < 0)
71
- goto done;
79
+ if (path->size > 0 && path->ptr[0] == '"' &&
80
+ (error = git_buf_unquote(path)) < 0)
81
+ return error;
72
82
 
73
83
  git_path_squash_slashes(path);
74
84
 
75
- done:
76
- return error;
85
+ if (!path->size)
86
+ return git_parse_err("patch contains empty path at line %"PRIuZ,
87
+ ctx->parse_ctx.line_num);
88
+
89
+ return 0;
77
90
  }
78
91
 
79
92
  static int parse_header_path(char **out, git_patch_parse_ctx *ctx)
80
93
  {
81
94
  git_buf path = GIT_BUF_INIT;
82
- int error = parse_header_path_buf(&path, ctx, header_path_len(ctx));
95
+ int error;
83
96
 
97
+ if ((error = parse_header_path_buf(&path, ctx, header_path_len(ctx))) < 0)
98
+ goto out;
84
99
  *out = git_buf_detach(&path);
85
100
 
101
+ out:
102
+ git_buf_dispose(&path);
86
103
  return error;
87
104
  }
88
105
 
@@ -92,6 +109,12 @@ static int parse_header_git_oldpath(
92
109
  git_buf old_path = GIT_BUF_INIT;
93
110
  int error;
94
111
 
112
+ if (patch->old_path) {
113
+ error = git_parse_err("patch contains duplicate old path at line %"PRIuZ,
114
+ ctx->parse_ctx.line_num);
115
+ goto out;
116
+ }
117
+
95
118
  if ((error = parse_header_path_buf(&old_path, ctx, ctx->parse_ctx.line_len - 1)) < 0)
96
119
  goto out;
97
120
 
@@ -108,9 +131,14 @@ static int parse_header_git_newpath(
108
131
  git_buf new_path = GIT_BUF_INIT;
109
132
  int error;
110
133
 
111
- if ((error = parse_header_path_buf(&new_path, ctx, ctx->parse_ctx.line_len - 1)) < 0)
134
+ if (patch->new_path) {
135
+ error = git_parse_err("patch contains duplicate new path at line %"PRIuZ,
136
+ ctx->parse_ctx.line_num);
112
137
  goto out;
138
+ }
113
139
 
140
+ if ((error = parse_header_path_buf(&new_path, ctx, ctx->parse_ctx.line_len - 1)) < 0)
141
+ goto out;
114
142
  patch->new_path = git_buf_detach(&new_path);
115
143
 
116
144
  out:
@@ -203,9 +231,9 @@ static int parse_header_git_deletedfilemode(
203
231
  git_patch_parsed *patch,
204
232
  git_patch_parse_ctx *ctx)
205
233
  {
206
- git__free((char *)patch->base.delta->old_file.path);
234
+ git__free((char *)patch->base.delta->new_file.path);
207
235
 
208
- patch->base.delta->old_file.path = NULL;
236
+ patch->base.delta->new_file.path = NULL;
209
237
  patch->base.delta->status = GIT_DELTA_DELETED;
210
238
  patch->base.delta->nfiles = 1;
211
239
 
@@ -216,9 +244,9 @@ static int parse_header_git_newfilemode(
216
244
  git_patch_parsed *patch,
217
245
  git_patch_parse_ctx *ctx)
218
246
  {
219
- git__free((char *)patch->base.delta->new_file.path);
247
+ git__free((char *)patch->base.delta->old_file.path);
220
248
 
221
- patch->base.delta->new_file.path = NULL;
249
+ patch->base.delta->old_file.path = NULL;
222
250
  patch->base.delta->status = GIT_DELTA_ADDED;
223
251
  patch->base.delta->nfiles = 1;
224
252
 
@@ -282,7 +310,7 @@ static int parse_header_percent(uint16_t *out, git_patch_parse_ctx *ctx)
282
310
  if (val < 0 || val > 100)
283
311
  return -1;
284
312
 
285
- *out = val;
313
+ *out = (uint16_t)val;
286
314
  return 0;
287
315
  }
288
316
 
@@ -328,7 +356,8 @@ static int parse_header_start(git_patch_parsed *patch, git_patch_parse_ctx *ctx)
328
356
  * proceeed here. We then hope for the "---" and "+++" lines to fix that
329
357
  * for us.
330
358
  */
331
- if (!git_parse_ctx_contains(&ctx->parse_ctx, "\n", 1)) {
359
+ if (!git_parse_ctx_contains(&ctx->parse_ctx, "\n", 1) &&
360
+ !git_parse_ctx_contains(&ctx->parse_ctx, "\r\n", 2)) {
332
361
  git_parse_advance_chars(&ctx->parse_ctx, ctx->parse_ctx.line_len - 1);
333
362
 
334
363
  git__free(patch->header_old_path);
@@ -376,6 +405,7 @@ static const parse_header_transition transitions[] = {
376
405
  { "index " , STATE_DIFF, STATE_INDEX, parse_header_git_index },
377
406
  { "index " , STATE_END, STATE_INDEX, parse_header_git_index },
378
407
 
408
+ { "--- " , STATE_DIFF, STATE_PATH, parse_header_git_oldpath },
379
409
  { "--- " , STATE_INDEX, STATE_PATH, parse_header_git_oldpath },
380
410
  { "+++ " , STATE_PATH, STATE_END, parse_header_git_newpath },
381
411
  { "GIT binary patch" , STATE_INDEX, STATE_END, NULL },
@@ -393,6 +423,7 @@ static const parse_header_transition transitions[] = {
393
423
  /* Next patch */
394
424
  { "diff --git " , STATE_END, 0, NULL },
395
425
  { "@@ -" , STATE_END, 0, NULL },
426
+ { "-- " , STATE_INDEX, 0, NULL },
396
427
  { "-- " , STATE_END, 0, NULL },
397
428
  };
398
429
 
@@ -458,29 +489,9 @@ done:
458
489
  return error;
459
490
  }
460
491
 
461
- static int parse_number(git_off_t *out, git_patch_parse_ctx *ctx)
462
- {
463
- const char *end;
464
- int64_t num;
465
-
466
- if (!git__isdigit(ctx->parse_ctx.line[0]))
467
- return -1;
468
-
469
- if (git__strntol64(&num, ctx->parse_ctx.line, ctx->parse_ctx.line_len, &end, 10) < 0)
470
- return -1;
471
-
472
- if (num < 0)
473
- return -1;
474
-
475
- *out = num;
476
- git_parse_advance_chars(&ctx->parse_ctx, (end - ctx->parse_ctx.line));
477
-
478
- return 0;
479
- }
480
-
481
492
  static int parse_int(int *out, git_patch_parse_ctx *ctx)
482
493
  {
483
- git_off_t num;
494
+ int64_t num;
484
495
 
485
496
  if (git_parse_advance_digit(&num, &ctx->parse_ctx, 10) < 0 || !git__is_int(num))
486
497
  return -1;
@@ -538,11 +549,19 @@ static int parse_hunk_header(
538
549
  return 0;
539
550
 
540
551
  fail:
541
- giterr_set(GITERR_PATCH, "invalid patch hunk header at line %"PRIuZ,
552
+ git_error_set(GIT_ERROR_PATCH, "invalid patch hunk header at line %"PRIuZ,
542
553
  ctx->parse_ctx.line_num);
543
554
  return -1;
544
555
  }
545
556
 
557
+ static int eof_for_origin(int origin) {
558
+ if (origin == GIT_DIFF_LINE_ADDITION)
559
+ return GIT_DIFF_LINE_ADD_EOFNL;
560
+ if (origin == GIT_DIFF_LINE_DELETION)
561
+ return GIT_DIFF_LINE_DEL_EOFNL;
562
+ return GIT_DIFF_LINE_CONTEXT_EOFNL;
563
+ }
564
+
546
565
  static int parse_hunk_body(
547
566
  git_patch_parsed *patch,
548
567
  git_patch_hunk *hunk,
@@ -553,6 +572,7 @@ static int parse_hunk_body(
553
572
 
554
573
  int oldlines = hunk->hunk.old_lines;
555
574
  int newlines = hunk->hunk.new_lines;
575
+ int last_origin = 0;
556
576
 
557
577
  for (;
558
578
  ctx->parse_ctx.remain_len > 1 &&
@@ -560,11 +580,17 @@ static int parse_hunk_body(
560
580
  !git_parse_ctx_contains_s(&ctx->parse_ctx, "@@ -");
561
581
  git_parse_advance_line(&ctx->parse_ctx)) {
562
582
 
583
+ int old_lineno, new_lineno, origin, prefix = 1;
563
584
  char c;
564
- int origin;
565
- int prefix = 1;
566
- int old_lineno = hunk->hunk.old_start + (hunk->hunk.old_lines - oldlines);
567
- int new_lineno = hunk->hunk.new_start + (hunk->hunk.new_lines - newlines);
585
+
586
+ if (git__add_int_overflow(&old_lineno, hunk->hunk.old_start, hunk->hunk.old_lines) ||
587
+ git__sub_int_overflow(&old_lineno, old_lineno, oldlines) ||
588
+ git__add_int_overflow(&new_lineno, hunk->hunk.new_start, hunk->hunk.new_lines) ||
589
+ git__sub_int_overflow(&new_lineno, new_lineno, newlines)) {
590
+ error = git_parse_err("unrepresentable line count at line %"PRIuZ,
591
+ ctx->parse_ctx.line_num);
592
+ goto done;
593
+ }
568
594
 
569
595
  if (ctx->parse_ctx.line_len == 0 || ctx->parse_ctx.line[ctx->parse_ctx.line_len - 1] != '\n') {
570
596
  error = git_parse_err("invalid patch instruction at line %"PRIuZ,
@@ -597,18 +623,34 @@ static int parse_hunk_body(
597
623
  old_lineno = -1;
598
624
  break;
599
625
 
626
+ case '\\':
627
+ /*
628
+ * If there are no oldlines left, then this is probably
629
+ * the "" marker. Do not
630
+ * verify its format, as it may be localized.
631
+ */
632
+ if (!oldlines) {
633
+ prefix = 0;
634
+ origin = eof_for_origin(last_origin);
635
+ old_lineno = -1;
636
+ new_lineno = -1;
637
+ break;
638
+ }
639
+ /* fall through */
640
+
600
641
  default:
601
642
  error = git_parse_err("invalid patch hunk at line %"PRIuZ, ctx->parse_ctx.line_num);
602
643
  goto done;
603
644
  }
604
645
 
605
646
  line = git_array_alloc(patch->base.lines);
606
- GITERR_CHECK_ALLOC(line);
647
+ GIT_ERROR_CHECK_ALLOC(line);
607
648
 
608
649
  memset(line, 0x0, sizeof(git_diff_line));
609
650
 
610
- line->content = ctx->parse_ctx.line + prefix;
611
651
  line->content_len = ctx->parse_ctx.line_len - prefix;
652
+ line->content = git__strndup(ctx->parse_ctx.line + prefix, line->content_len);
653
+ GIT_ERROR_CHECK_ALLOC(line->content);
612
654
  line->content_offset = ctx->parse_ctx.content_len - ctx->parse_ctx.remain_len;
613
655
  line->origin = origin;
614
656
  line->num_lines = 1;
@@ -616,6 +658,8 @@ static int parse_hunk_body(
616
658
  line->new_lineno = new_lineno;
617
659
 
618
660
  hunk->line_count++;
661
+
662
+ last_origin = origin;
619
663
  }
620
664
 
621
665
  if (oldlines || newlines) {
@@ -625,7 +669,8 @@ static int parse_hunk_body(
625
669
  goto done;
626
670
  }
627
671
 
628
- /* Handle "". Only expect the leading
672
+ /*
673
+ * Handle "". Only expect the leading
629
674
  * backslash, though, because the rest of the string could be
630
675
  * localized. Because `diff` optimizes for the case where you
631
676
  * want to apply the patch by hand.
@@ -636,11 +681,25 @@ static int parse_hunk_body(
636
681
  line = git_array_get(patch->base.lines, git_array_size(patch->base.lines) - 1);
637
682
 
638
683
  if (line->content_len < 1) {
639
- error = git_parse_err("cannot trim trailing newline of empty line");
684
+ error = git_parse_err("last line has no trailing newline");
640
685
  goto done;
641
686
  }
642
687
 
643
- line->content_len--;
688
+ line = git_array_alloc(patch->base.lines);
689
+ GIT_ERROR_CHECK_ALLOC(line);
690
+
691
+ memset(line, 0x0, sizeof(git_diff_line));
692
+
693
+ line->content_len = ctx->parse_ctx.line_len;
694
+ line->content = git__strndup(ctx->parse_ctx.line, line->content_len);
695
+ GIT_ERROR_CHECK_ALLOC(line->content);
696
+ line->content_offset = ctx->parse_ctx.content_len - ctx->parse_ctx.remain_len;
697
+ line->origin = eof_for_origin(last_origin);
698
+ line->num_lines = 1;
699
+ line->old_lineno = -1;
700
+ line->new_lineno = -1;
701
+
702
+ hunk->line_count++;
644
703
 
645
704
  git_parse_advance_line(&ctx->parse_ctx);
646
705
  }
@@ -670,7 +729,7 @@ static int parse_patch_header(
670
729
  * noise, continue.
671
730
  */
672
731
  if (parse_hunk_header(&hunk, ctx) < 0) {
673
- giterr_clear();
732
+ git_error_clear();
674
733
  continue;
675
734
  }
676
735
 
@@ -693,7 +752,7 @@ static int parse_patch_header(
693
752
  continue;
694
753
  }
695
754
 
696
- giterr_set(GITERR_PATCH, "no patch found");
755
+ git_error_set(GIT_ERROR_PATCH, "no patch found");
697
756
  error = GIT_ENOTFOUND;
698
757
 
699
758
  done:
@@ -706,7 +765,7 @@ static int parse_patch_binary_side(
706
765
  {
707
766
  git_diff_binary_t type = GIT_DIFF_BINARY_NONE;
708
767
  git_buf base85 = GIT_BUF_INIT, decoded = GIT_BUF_INIT;
709
- git_off_t len;
768
+ int64_t len;
710
769
  int error = 0;
711
770
 
712
771
  if (git_parse_ctx_contains_s(&ctx->parse_ctx, "literal ")) {
@@ -749,7 +808,7 @@ static int parse_patch_binary_side(
749
808
 
750
809
  encoded_len = ((decoded_len / 4) + !!(decoded_len % 4)) * 5;
751
810
 
752
- if (encoded_len > ctx->parse_ctx.line_len - 1) {
811
+ if (!encoded_len || !ctx->parse_ctx.line_len || encoded_len > ctx->parse_ctx.line_len - 1) {
753
812
  error = git_parse_err("truncated binary data at line %"PRIuZ, ctx->parse_ctx.line_num);
754
813
  goto done;
755
814
  }
@@ -819,12 +878,23 @@ static int parse_patch_binary_nodata(
819
878
  git_patch_parsed *patch,
820
879
  git_patch_parse_ctx *ctx)
821
880
  {
881
+ const char *old = patch->old_path ? patch->old_path : patch->header_old_path;
882
+ const char *new = patch->new_path ? patch->new_path : patch->header_new_path;
883
+
884
+ if (!old || !new)
885
+ return git_parse_err("corrupt binary data without paths at line %"PRIuZ, ctx->parse_ctx.line_num);
886
+
887
+ if (patch->base.delta->status == GIT_DELTA_ADDED)
888
+ old = "/dev/null";
889
+ else if (patch->base.delta->status == GIT_DELTA_DELETED)
890
+ new = "/dev/null";
891
+
822
892
  if (git_parse_advance_expected_str(&ctx->parse_ctx, "Binary files ") < 0 ||
823
- git_parse_advance_expected_str(&ctx->parse_ctx, patch->header_old_path) < 0 ||
824
- git_parse_advance_expected_str(&ctx->parse_ctx, " and ") < 0 ||
825
- git_parse_advance_expected_str(&ctx->parse_ctx, patch->header_new_path) < 0 ||
826
- git_parse_advance_expected_str(&ctx->parse_ctx, " differ") < 0 ||
827
- git_parse_advance_nl(&ctx->parse_ctx) < 0)
893
+ git_parse_advance_expected_str(&ctx->parse_ctx, old) < 0 ||
894
+ git_parse_advance_expected_str(&ctx->parse_ctx, " and ") < 0 ||
895
+ git_parse_advance_expected_str(&ctx->parse_ctx, new) < 0 ||
896
+ git_parse_advance_expected_str(&ctx->parse_ctx, " differ") < 0 ||
897
+ git_parse_advance_nl(&ctx->parse_ctx) < 0)
828
898
  return git_parse_err("corrupt git binary header at line %"PRIuZ, ctx->parse_ctx.line_num);
829
899
 
830
900
  patch->base.binary.contains_data = 0;
@@ -841,7 +911,7 @@ static int parse_patch_hunks(
841
911
 
842
912
  while (git_parse_ctx_contains_s(&ctx->parse_ctx, "@@ -")) {
843
913
  hunk = git_array_alloc(patch->base.hunks);
844
- GITERR_CHECK_ALLOC(hunk);
914
+ GIT_ERROR_CHECK_ALLOC(hunk);
845
915
 
846
916
  memset(hunk, 0, sizeof(git_patch_hunk));
847
917
 
@@ -941,21 +1011,15 @@ static int check_filenames(git_patch_parsed *patch)
941
1011
  return git_parse_err("missing old path");
942
1012
 
943
1013
  /* Ensure (non-renamed) paths match */
944
- if (check_header_names(
945
- patch->header_old_path, patch->old_path, "old", added) < 0 ||
946
- check_header_names(
947
- patch->header_new_path, patch->new_path, "new", deleted) < 0)
1014
+ if (check_header_names(patch->header_old_path, patch->old_path, "old", added) < 0 ||
1015
+ check_header_names(patch->header_new_path, patch->new_path, "new", deleted) < 0)
948
1016
  return -1;
949
1017
 
950
- prefixed_old = (!added && patch->old_path) ? patch->old_path :
951
- patch->header_old_path;
952
- prefixed_new = (!deleted && patch->new_path) ? patch->new_path :
953
- patch->header_new_path;
1018
+ prefixed_old = (!added && patch->old_path) ? patch->old_path : patch->header_old_path;
1019
+ prefixed_new = (!deleted && patch->new_path) ? patch->new_path : patch->header_new_path;
954
1020
 
955
- if (check_prefix(
956
- &patch->old_prefix, &old_prefixlen, patch, prefixed_old) < 0 ||
957
- check_prefix(
958
- &patch->new_prefix, &new_prefixlen, patch, prefixed_new) < 0)
1021
+ if ((prefixed_old && check_prefix(&patch->old_prefix, &old_prefixlen, patch, prefixed_old) < 0) ||
1022
+ (prefixed_new && check_prefix(&patch->new_prefix, &new_prefixlen, patch, prefixed_new) < 0))
959
1023
  return -1;
960
1024
 
961
1025
  /* Prefer the rename filenames as they are unambiguous and unprefixed */
@@ -970,7 +1034,7 @@ static int check_filenames(git_patch_parsed *patch)
970
1034
  patch->base.delta->new_file.path = prefixed_new + new_prefixlen;
971
1035
 
972
1036
  if (!patch->base.delta->old_file.path &&
973
- !patch->base.delta->new_file.path)
1037
+ !patch->base.delta->new_file.path)
974
1038
  return git_parse_err("git diff header lacks old / new paths");
975
1039
 
976
1040
  return 0;
@@ -984,14 +1048,14 @@ static int check_patch(git_patch_parsed *patch)
984
1048
  return -1;
985
1049
 
986
1050
  if (delta->old_file.path &&
987
- delta->status != GIT_DELTA_DELETED &&
988
- !delta->new_file.mode)
1051
+ delta->status != GIT_DELTA_DELETED &&
1052
+ !delta->new_file.mode)
989
1053
  delta->new_file.mode = delta->old_file.mode;
990
1054
 
991
1055
  if (delta->status == GIT_DELTA_MODIFIED &&
992
- !(delta->flags & GIT_DIFF_FLAG_BINARY) &&
993
- delta->new_file.mode == delta->old_file.mode &&
994
- git_array_size(patch->base.hunks) == 0)
1056
+ !(delta->flags & GIT_DIFF_FLAG_BINARY) &&
1057
+ delta->new_file.mode == delta->old_file.mode &&
1058
+ git_array_size(patch->base.hunks) == 0)
995
1059
  return git_parse_err("patch with no hunks");
996
1060
 
997
1061
  if (delta->status == GIT_DELTA_ADDED) {
@@ -1063,6 +1127,8 @@ int git_patch_parsed_from_diff(git_patch **out, git_diff *d, size_t idx)
1063
1127
  static void patch_parsed__free(git_patch *p)
1064
1128
  {
1065
1129
  git_patch_parsed *patch = (git_patch_parsed *)p;
1130
+ git_diff_line *line;
1131
+ size_t i;
1066
1132
 
1067
1133
  if (!patch)
1068
1134
  return;
@@ -1072,6 +1138,8 @@ static void patch_parsed__free(git_patch *p)
1072
1138
  git__free((char *)patch->base.binary.old_file.data);
1073
1139
  git__free((char *)patch->base.binary.new_file.data);
1074
1140
  git_array_clear(patch->base.hunks);
1141
+ git_array_foreach(patch->base.lines, i, line)
1142
+ git__free((char *) line->content);
1075
1143
  git_array_clear(patch->base.lines);
1076
1144
  git__free(patch->base.delta);
1077
1145
 
@@ -1099,7 +1167,7 @@ int git_patch_parse(
1099
1167
  *out = NULL;
1100
1168
 
1101
1169
  patch = git__calloc(1, sizeof(git_patch_parsed));
1102
- GITERR_CHECK_ALLOC(patch);
1170
+ GIT_ERROR_CHECK_ALLOC(patch);
1103
1171
 
1104
1172
  patch->ctx = ctx;
1105
1173
  GIT_REFCOUNT_INC(patch->ctx);
@@ -1107,7 +1175,7 @@ int git_patch_parse(
1107
1175
  patch->base.free_fn = patch_parsed__free;
1108
1176
 
1109
1177
  patch->base.delta = git__calloc(1, sizeof(git_diff_delta));
1110
- GITERR_CHECK_ALLOC(patch->base.delta);
1178
+ GIT_ERROR_CHECK_ALLOC(patch->base.delta);
1111
1179
 
1112
1180
  patch->base.delta->status = GIT_DELTA_MODIFIED;
1113
1181
  patch->base.delta->nfiles = 2;
@@ -1146,7 +1214,7 @@ int git_patch_from_buffer(
1146
1214
  int error;
1147
1215
 
1148
1216
  ctx = git_patch_parse_ctx_init(content, content_len, opts);
1149
- GITERR_CHECK_ALLOC(ctx);
1217
+ GIT_ERROR_CHECK_ALLOC(ctx);
1150
1218
 
1151
1219
  error = git_patch_parse(out, ctx);
1152
1220