diff options
Diffstat (limited to 'src/diff.c')
-rw-r--r-- | src/diff.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/diff.c b/src/diff.c index 6c2592137..3c6a0f242 100644 --- a/src/diff.c +++ b/src/diff.c @@ -460,7 +460,7 @@ out: return error; } -static int line_cb( +static int patchid_line_cb( const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, @@ -482,6 +482,14 @@ static int line_cb( break; case GIT_DIFF_LINE_CONTEXT: break; + case GIT_DIFF_LINE_CONTEXT_EOFNL: + case GIT_DIFF_LINE_ADD_EOFNL: + case GIT_DIFF_LINE_DEL_EOFNL: + /* + * Ignore EOF without newlines for patch IDs as whitespace is + * not supposed to be significant. + */ + return 0; default: git_error_set(GIT_ERROR_PATCH, "invalid line origin for patch"); return -1; @@ -518,7 +526,7 @@ int git_diff_patchid(git_oid *out, git_diff *diff, git_diff_patchid_options *opt if ((error = git_hash_ctx_init(&args.ctx)) < 0) goto out; - if ((error = git_diff_foreach(diff, file_cb, NULL, NULL, line_cb, &args)) < 0) + if ((error = git_diff_foreach(diff, file_cb, NULL, NULL, patchid_line_cb, &args)) < 0) goto out; if ((error = (flush_hunk(&args.result, &args.ctx))) < 0) |