Skip to content

Commit

Permalink
fix: should not use cached source in cache buffer (#95)
Browse files Browse the repository at this point in the history
  • Loading branch information
JSerFeng committed Apr 10, 2024
1 parent f7b21e5 commit ac34b61
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions src/cached_source.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,9 @@ impl<T: Source + Hash + PartialEq + Eq + 'static> Source for CachedSource<T> {
}

fn buffer(&self) -> Cow<[u8]> {
let cached = self.cached_buffer.get_or_init(|| {
let source = self.cached_source.get();
match source {
Some(source) => source.as_bytes().to_vec(),
None => self.inner.buffer().to_vec(),
}
});
let cached = self
.cached_buffer
.get_or_init(|| self.inner.buffer().to_vec());
Cow::Borrowed(cached)
}

Expand Down Expand Up @@ -353,4 +349,13 @@ mod tests {
assert_eq!(on_name_count, cached_on_name_count);
assert_eq!(generated_info, cached_generated_info);
}

#[test]
fn should_have_correct_buffer_if_cache_buffer_from_cache_source() {
let buf = vec![128u8];
let source = CachedSource::new(RawSource::from(buf.clone()));

source.source();
assert_eq!(source.buffer(), buf.as_slice());
}
}

0 comments on commit ac34b61

Please sign in to comment.