diff --git a/read-cache.c b/read-cache.c
index 20c9d494ac94380c9074997e9cb3c69ff1c04a3f..eae4745d284e00e279b5b8f4b032bdb9ca433984 100644 (file)
--- a/read-cache.c
+++ b/read-cache.c
ce->ce_mode = create_ce_mode(st.st_mode);
if (!trust_executable_bit) {
/* If there is an existing entry, pick the mode bits
- * from it.
+ * from it, otherwise assume unexecutable.
*/
int pos = cache_name_pos(path, namelen);
if (pos >= 0)
ce->ce_mode = active_cache[pos]->ce_mode;
+ else if (S_ISREG(st.st_mode))
+ ce->ce_mode = create_ce_mode(S_IFREG | 0666);
}
if (index_path(ce->sha1, path, &st, 1))
die("index file corrupt");
}
-int discard_cache()
+int discard_cache(void)
{
int ret;