Signed-off-by: Jaime Soriano Pastor <jsorianopastor@xxxxxxxxx> --- read-cache.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/read-cache.c b/read-cache.c index 7f5645e..e117d3a 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1438,6 +1438,21 @@ static struct cache_entry *create_from_disk(struct ondisk_cache_entry *ondisk, return ce; } +void check_next_ce(struct cache_entry *ce, struct cache_entry *next_ce) { + if (!ce || !next_ce) + return; + if (cache_name_compare(ce->name, ce_namelen(ce), + next_ce->name, ce_namelen(next_ce)) > 1) + die("Unordered stage entries in index"); + if (ce_same_name(ce, next_ce)) { + if (!ce_stage(ce)) + die("Multiple stage entries for merged file '%s'", + ce->name); + if (ce_stage(ce) >= ce_stage(next_ce)) + die("Unordered stage entries for '%s'", ce->name); + } +} + /* remember to discard_cache() before reading a different cache! */ int read_index_from(struct index_state *istate, const char *path) { @@ -1499,6 +1514,9 @@ int read_index_from(struct index_state *istate, const char *path) ce = create_from_disk(disk_ce, &consumed, previous_name); set_index_entry(istate, i, ce); + if (i > 0) + check_next_ce(istate->cache[i-1], ce); + src_offset += consumed; } strbuf_release(&previous_name_buf); -- 2.0.4.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html