Mercurial > hg > xemacs-beta
diff src/file-coding.c @ 5784:0cb4f494a548
Have the result of coding_character_tell() reflect str->convert_to, too.
src/ChangeLog addition:
2014-01-22 Aidan Kehoe <kehoea@parhasard.net>
* text.c (buffered_bytecount_to_charcount): New.
Return the number of characters in a coding or lstream buffer,
including partial characters at the beginning of the buffer, but
not including those at the end. Refactored from
Lstream_character_tell().
* text.h:
* text.h (buffered_bytecount_to_charcount): Declare it.
* lstream.c (Lstream_character_tell):
Use the refactored buffered_bytecount_to_charcount () here, both
for the unget buffer and in_buffer.
* file-coding.c (coding_character_tell):
Check the character count of the lstream buffer too, when passing
back the character count from the coding stream.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Wed, 22 Jan 2014 17:52:00 +0000 |
parents | ccaa851ae712 |
children | d2c0ff38ad5c |
line wrap: on
line diff
--- a/src/file-coding.c Tue Jan 21 00:27:16 2014 +0000 +++ b/src/file-coding.c Wed Jan 22 17:52:00 2014 +0000 @@ -1994,8 +1994,19 @@ coding_character_tell (Lstream *stream) { struct coding_stream *str = CODING_STREAM_DATA (stream); - - return XCODESYSMETH_OR_GIVEN (str->codesys, character_tell, (str), -1); + Charcount ctell + = XCODESYSMETH_OR_GIVEN (str->codesys, character_tell, (str), -1); + + if (ctell > 0 && Dynarr_length (str->convert_to) > 0) + { + ctell + -= buffered_bytecount_to_charcount ((const Ibyte *) + (Dynarr_begin (str->convert_to)), + Dynarr_length (str->convert_to)); + text_checking_assert (ctell >= 0); + } + + return ctell; } static int