caio.co/de/caca

Handle commit decode errors

Id
34bf0af20468fd53a7b93f0041a075e68f42e964
Author
Caio
Commit time
2024-03-18T08:51:40+01:00

Modified urso/src/lib.rs

@@ -694,14 +694,18

let mut queue = OnceQueue::new();

- {
- let commit = self.find_commit(head)?;
- let time = commit.time().expect("handle error");
- queue.insert(ByCommitTime {
- time,
- id: commit.id,
- });
+ macro_rules! enqueue {
+ ($id:expr) => {
+ let commit = self.find_commit($id)?;
+ let time = commit.time().map_err(|_| Error::Decode($id))?;
+ queue.insert(ByCommitTime {
+ time,
+ id: commit.id,
+ });
+ };
}
+
+ enqueue!(head);

let mut parent_ids = Vec::new();
let mut buf = Vec::new();
@@ -739,14 +743,7
}
// single parent, follow it
1 => {
- {
- let commit = self.find_commit(parent_ids[0])?;
- let time = commit.time().expect("handle error");
- queue.insert(ByCommitTime {
- time,
- id: commit.id,
- });
- }
+ enqueue!(parent_ids[0]);
parent_ids[0]
}
_merge_commit => {
@@ -776,25 +773,11

if let Some(idx) = first_treesame_idx {
let parent_id = parent_ids[idx];
- {
- let commit = self.find_commit(parent_id)?;
- let time = commit.time().expect("handle error");
- queue.insert(ByCommitTime {
- time,
- id: commit.id,
- });
- }
+ enqueue!(parent_id);
parent_id
} else {
for &id in parent_ids.iter() {
- {
- let commit = self.find_commit(id)?;
- let time = commit.time().expect("handle error");
- queue.insert(ByCommitTime {
- time,
- id: commit.id,
- });
- }
+ enqueue!(id);
}
parent_ids[0]
}