comparison 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
comparison
equal deleted inserted replaced
5783:cfc6a8c144f1 5784:0cb4f494a548
1992 1992
1993 static Charcount 1993 static Charcount
1994 coding_character_tell (Lstream *stream) 1994 coding_character_tell (Lstream *stream)
1995 { 1995 {
1996 struct coding_stream *str = CODING_STREAM_DATA (stream); 1996 struct coding_stream *str = CODING_STREAM_DATA (stream);
1997 1997 Charcount ctell
1998 return XCODESYSMETH_OR_GIVEN (str->codesys, character_tell, (str), -1); 1998 = XCODESYSMETH_OR_GIVEN (str->codesys, character_tell, (str), -1);
1999
2000 if (ctell > 0 && Dynarr_length (str->convert_to) > 0)
2001 {
2002 ctell
2003 -= buffered_bytecount_to_charcount ((const Ibyte *)
2004 (Dynarr_begin (str->convert_to)),
2005 Dynarr_length (str->convert_to));
2006 text_checking_assert (ctell >= 0);
2007 }
2008
2009 return ctell;
1999 } 2010 }
2000 2011
2001 static int 2012 static int
2002 coding_flusher (Lstream *stream) 2013 coding_flusher (Lstream *stream)
2003 { 2014 {