Skip to content

Commit ac34b61

Browse files
authored
fix: should not use cached source in cache buffer (#95)
1 parent f7b21e5 commit ac34b61

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/cached_source.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,9 @@ impl<T: Source + Hash + PartialEq + Eq + 'static> Source for CachedSource<T> {
8484
}
8585

8686
fn buffer(&self) -> Cow<[u8]> {
87-
let cached = self.cached_buffer.get_or_init(|| {
88-
let source = self.cached_source.get();
89-
match source {
90-
Some(source) => source.as_bytes().to_vec(),
91-
None => self.inner.buffer().to_vec(),
92-
}
93-
});
87+
let cached = self
88+
.cached_buffer
89+
.get_or_init(|| self.inner.buffer().to_vec());
9490
Cow::Borrowed(cached)
9591
}
9692

@@ -353,4 +349,13 @@ mod tests {
353349
assert_eq!(on_name_count, cached_on_name_count);
354350
assert_eq!(generated_info, cached_generated_info);
355351
}
352+
353+
#[test]
354+
fn should_have_correct_buffer_if_cache_buffer_from_cache_source() {
355+
let buf = vec![128u8];
356+
let source = CachedSource::new(RawSource::from(buf.clone()));
357+
358+
source.source();
359+
assert_eq!(source.buffer(), buf.as_slice());
360+
}
356361
}

0 commit comments

Comments
 (0)