summaryrefslogtreecommitdiffstats
path: root/src/collector
diff options
context:
space:
mode:
authorPaul Masurel <paul.masurel@gmail.com>2018-05-07 23:57:53 -0700
committerPaul Masurel <paul.masurel@gmail.com>2018-05-07 23:57:53 -0700
commit24050d0eb526ab63323f91e03e55ea61fc6fc1ea (patch)
tree8f290a9d7983abb7aed4c89dd4ca04d58045ddd1 /src/collector
parent9a0b7f9855f34eb772358e0cc1d00b4fa937c781 (diff)
Remove some unsafe stuff, justified some of it.
Diffstat (limited to 'src/collector')
-rw-r--r--src/collector/facet_collector.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/collector/facet_collector.rs b/src/collector/facet_collector.rs
index e904c2e..e527499 100644
--- a/src/collector/facet_collector.rs
+++ b/src/collector/facet_collector.rs
@@ -379,8 +379,10 @@ impl FacetCollector {
})
.sum();
if count > 0u64 {
- let bytes = facet_merger.key().to_owned();
- facet_counts.insert(Facet::from_encoded(bytes), count);
+ let bytes: Vec<u8> = facet_merger.key().to_owned();
+ // may create an corrupted facet if the term dicitonary is corrupted
+ let facet = unsafe { Facet::from_encoded(bytes) };
+ facet_counts.insert(facet, count);
}
}
FacetCounts { facet_counts }
@@ -452,9 +454,9 @@ impl FacetCounts {
let right_bound = if facet.is_root() {
Bound::Unbounded
} else {
- let mut facet_after_bytes = facet.encoded_bytes().to_owned();
+ let mut facet_after_bytes: Vec<u8> = facet.encoded_bytes().to_owned();
facet_after_bytes.push(1u8);
- let facet_after = Facet::from_encoded(facet_after_bytes);
+ let facet_after = unsafe { Facet::from_encoded(facet_after_bytes) }; // ok logic
Bound::Excluded(facet_after)
};
let underlying: btree_map::Range<_, _> = self.facet_counts.range((left_bound, right_bound));