Commits

Junio C Hamano  committed cdda666

diff.c: fix "size cache" handling.

We broke the size-cache handling when we changed the function
signature of sha1_object_info() in 21666f1a. We obviously
wanted to cache the size we obtained when sha1_object_info()
succeeded, not when it failed.

Signed-off-by: Junio C Hamano <junkio@cox.net>

  • Participants
  • Parent commits 9cf0430

Comments (0)

Files changed (1)

 		enum object_type type;
 		struct sha1_size_cache *e;
 
+		if (size_only && use_size_cache &&
+		    (e = locate_size_cache(s->sha1, 1, 0)) != NULL) {
+			s->size = e->size;
+			return 0;
+		}
+
 		if (size_only) {
-			e = locate_size_cache(s->sha1, 1, 0);
-			if (e) {
-				s->size = e->size;
-				return 0;
-			}
 			type = sha1_object_info(s->sha1, &s->size);
-			if (type < 0)
+			if (use_size_cache && 0 < type)
 				locate_size_cache(s->sha1, 0, s->size);
 		}
 		else {