mirror of git://sourceware.org/git/glibc.git
Fix handling of incomplete character storage in state
If iconv is called more than once in a row for adding bytes to the sequence while still remain under the minimum size of a character and if STORE_REST is defined, we didn't consume any input. Fix that.
This commit is contained in:
parent
da62f81bdd
commit
1af4e29837
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-05-14 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
|
* iconv/loop.c (SINGLE) [STORE_REST]: Add input bytes to bytebuf before
|
||||||
|
storing incomplete byte sequence in state object.
|
||||||
|
|
||||||
2011-05-11 Andreas Schwab <schwab@redhat.com>
|
2011-05-11 Andreas Schwab <schwab@redhat.com>
|
||||||
|
|
||||||
* Makeconfig (+link-pie): Indent.
|
* Makeconfig (+link-pie): Indent.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Conversion loop frame work.
|
/* Conversion loop frame work.
|
||||||
Copyright (C) 1998-2002, 2003, 2005, 2008 Free Software Foundation, Inc.
|
Copyright (C) 1998-2003, 2005, 2008, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||||
|
|
||||||
|
|
@ -399,6 +399,9 @@ SINGLE(LOOPFCT) (struct __gconv_step *step,
|
||||||
{
|
{
|
||||||
*inptrp = inend;
|
*inptrp = inend;
|
||||||
#ifdef STORE_REST
|
#ifdef STORE_REST
|
||||||
|
while (inptr < inend)
|
||||||
|
bytebuf[inlen++] = *inptr++;
|
||||||
|
|
||||||
inptr = bytebuf;
|
inptr = bytebuf;
|
||||||
inptrp = &inptr;
|
inptrp = &inptr;
|
||||||
inend = &bytebuf[inlen];
|
inend = &bytebuf[inlen];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue