Skip to content

Commit fbee82a

Browse files
committed
Merge pull request #563 from mastahyeti/header_field_nil
Make Commit#header_field return nil for non-existent headers
2 parents 926a208 + 690ea7e commit fbee82a

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

ext/rugged/rugged_commit.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -567,14 +567,20 @@ static VALUE rb_git_commit_header_field(VALUE self, VALUE rb_field) {
567567
git_buf header_field = { 0 };
568568
VALUE rb_result;
569569
git_commit *commit;
570+
int error;
570571

571572
Check_Type(rb_field, T_STRING);
572573

573574
Data_Get_Struct(self, git_commit, commit);
574575

575-
rugged_exception_check(
576-
git_commit_header_field(&header_field, commit, StringValueCStr(rb_field))
577-
);
576+
error = git_commit_header_field(&header_field, commit, StringValueCStr(rb_field));
577+
578+
if (error == GIT_ENOTFOUND) {
579+
git_buf_free(&header_field);
580+
return Qnil;
581+
}
582+
583+
rugged_exception_check(error);
578584

579585
rb_result = rb_enc_str_new(header_field.ptr, header_field.size, rb_utf8_encoding());
580586

test/commit_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ def test_header_field
181181

182182
expected_header_field = "Scott Chacon <[email protected]> 1273360386 -0700"
183183
assert_equal expected_header_field, obj.header_field("author")
184+
assert_equal nil, obj.header_field("foobar")
184185
end
185186

186187
def test_header

0 commit comments

Comments
 (0)