Skip to content

Commit

Permalink
fill_textconv(): Don't get/put cache if sha1 is not valid
Browse files Browse the repository at this point in the history
When blaming files in the working tree, the filespec is marked with
!sha1_valid, as we have not given the contents an object name yet.  The
function to cache textconv results (keyed on the object name), however,
didn't check this condition, and ended up on storing the cached result
under a random object name.

Cc: Axel Bonnet <axel.bonnet@ensimag.imag.fr>
Cc: Clément Poulain <clement.poulain@ensimag.imag.fr>
Cc: Diane Gasselin <diane.gasselin@ensimag.imag.fr>
Cc: Jeff King <peff@peff.net>
Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Kirill Smelkov authored and Junio C Hamano committed Dec 20, 2010
1 parent b1b14ec commit 9ec09b0
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 4 deletions.
4 changes: 2 additions & 2 deletions diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -4388,7 +4388,7 @@ size_t fill_textconv(struct userdiff_driver *driver,
return df->size;
}

if (driver->textconv_cache) {
if (driver->textconv_cache && df->sha1_valid) {
*outbuf = notes_cache_get(driver->textconv_cache, df->sha1,
&size);
if (*outbuf)
Expand All @@ -4399,7 +4399,7 @@ size_t fill_textconv(struct userdiff_driver *driver,
if (!*outbuf)
die("unable to read files to diff");

if (driver->textconv_cache) {
if (driver->textconv_cache && df->sha1_valid) {
/* ignore errors, as we might be in a readonly repository */
notes_cache_put(driver->textconv_cache, df->sha1, *outbuf,
size);
Expand Down
3 changes: 1 addition & 2 deletions t/t8006-blame-textconv.sh
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,7 @@ cat >expected_one <<EOF
(Number2 2010-01-01 20:00:00 +0000 1) converted: test 1 version 2
EOF

# one.bin is blamed as 'Not Committed yet'
test_expect_failure 'blame --textconv works with textconvcache' '
test_expect_success 'blame --textconv works with textconvcache' '
git blame --textconv two.bin >blame &&
find_blame <blame >result &&
test_cmp expected result &&
Expand Down

0 comments on commit 9ec09b0

Please sign in to comment.