summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.c3
-rwxr-xr-xt/t1307-config-blob.sh9
2 files changed, 11 insertions, 1 deletions
diff --git a/config.c b/config.c
index 61a9c296f4..5eca17b242 100644
--- a/config.c
+++ b/config.c
@@ -228,7 +228,8 @@ static int get_next_char(void)
/* DOS like systems */
c = cf->do_fgetc(cf);
if (c != '\n') {
- cf->do_ungetc(c, cf);
+ if (c != EOF)
+ cf->do_ungetc(c, cf);
c = '\r';
}
}
diff --git a/t/t1307-config-blob.sh b/t/t1307-config-blob.sh
index fdc257e66f..3c6791e6be 100755
--- a/t/t1307-config-blob.sh
+++ b/t/t1307-config-blob.sh
@@ -67,4 +67,13 @@ test_expect_success 'parse errors in blobs are properly attributed' '
grep "HEAD:config" err
'
+test_expect_success 'can parse blob ending with CR' '
+ printf "[some]key = value\\r" >config &&
+ git add config &&
+ git commit -m CR &&
+ echo value >expect &&
+ git config --blob=HEAD:config some.key >actual &&
+ test_cmp expect actual
+'
+
test_done