Skip to content
Snippets Groups Projects
Commit 5807e3a8865e authored by Raphaël Gomès's avatar Raphaël Gomès
Browse files

rust-python-index: don't panic on a corrupted index when calling from Python

This makes `test-verify.t` pass again. In an ideal world, we would find
the exact commit where this test breaks and amend part of this change there,
but this is a long enough series.
parent f9a52a9603f9
No related branches found
No related tags found
2 merge requests!737Improvements to the Rust index's performance,!708Implement pure rust revlog Index
......@@ -675,7 +675,9 @@
.expect("default header is broken")
.unwrap(),
)
.unwrap(),
.map_err(|e| {
revlog_error_with_msg(py, e.to_string().as_bytes())
})?,
),
RefCell::new(None),
RefCell::new(None),
......@@ -1052,6 +1054,21 @@
}
}
fn revlog_error_with_msg(py: Python, msg: &[u8]) -> PyErr {
match py
.import("mercurial.error")
.and_then(|m| m.get(py, "RevlogError"))
{
Err(e) => e,
Ok(cls) => PyErr::from_instance(
py,
cls.call(py, (PyBytes::new(py, msg),), None)
.ok()
.into_py_object(py),
),
}
}
fn graph_error(py: Python, _err: hg::GraphError) -> PyErr {
// ParentOutOfRange is currently the only alternative
// in `hg::GraphError`. The C index always raises this simple ValueError.
......
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