diff options
author | Martin Fischer <martin@push-f.com> | 2023-08-17 16:12:51 +0200 |
---|---|---|
committer | Martin Fischer <martin@push-f.com> | 2023-08-19 13:41:55 +0200 |
commit | cb4e9cf7cfc1612c67f16bfabadbdf442cd380fe (patch) | |
tree | 5aa2bf7dccafe66d735f3609d446bfad083ab8a3 /src/emitter.rs | |
parent | c15895d44d17984386d3684e2aa85aca386ba3bf (diff) |
fix: fix lots of position off-by-ones
Previously the PosTrackingReader always mysteriously subtracted 1
from the current position ... this wasn't sound at all ... the machine
just happens to often call `Tokenizer::unread_char` ... but not always.
E.g. for proper comments it didn't which resulted in their offset and
spans being off-by-one, which is fixed by this commit (see test_spans.rs).
Diffstat (limited to 'src/emitter.rs')
-rw-r--r-- | src/emitter.rs | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/emitter.rs b/src/emitter.rs index 1f60f70..90aa4db 100644 --- a/src/emitter.rs +++ b/src/emitter.rs @@ -310,7 +310,7 @@ impl<O: Offset> Emitter<O> for DefaultEmitter<O> { *self_closing = true; } Token::EndTag(_) => { - self.emit_error(Error::EndTagWithTrailingSolidus, offset); + self.emit_error(Error::EndTagWithTrailingSolidus, offset - 1); } _ => { debug_assert!(false); @@ -378,9 +378,8 @@ impl<O: Offset> Emitter<O> for DefaultEmitter<O> { }, )); } - fn init_attribute_value(&mut self, offset: O, quoted: bool) { - self.current_attribute.as_mut().unwrap().1.value_span = - offset + quoted as usize..offset + quoted as usize; + fn init_attribute_value(&mut self, offset: O, _quoted: bool) { + self.current_attribute.as_mut().unwrap().1.value_span = offset..offset; } fn push_attribute_name(&mut self, s: &str) { |