Skip to content
Snippets Groups Projects
Commit 6614cac5 authored by Gregory Szorc's avatar Gregory Szorc
Browse files

filelog: don't crash on invalid copy metadata (issue5748)

"copy" and "copyrev" are both supposed to appear next to each other.
However, a user report demonstrated a crash that indicates that
something in the wild is producing "copy" without "copyrev"
(probably `hg convert`).

While we should definitely fix the source of the bad metadata,
the bad code causing the crash is already in the wild and who knows
how many repositories are impacted. So let's be more defensive
when accessing the file revision metadata.
parent 6169d95d
No related branches found
No related tags found
No related merge requests found
......@@ -135,7 +135,9 @@
return False
t = self.revision(node)
m = revlog.parsemeta(t)[0]
if m and "copy" in m:
# copy and copyrev occur in pairs. In rare cases due to bugs,
# one can occur without the other.
if m and "copy" in m and "copyrev" in m:
return (m["copy"], revlog.bin(m["copyrev"]))
return False
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment