Try again!

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@13179 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
CaS 2002-03-20 17:30:01 +00:00
parent 8894671a43
commit c3167184cb

View file

@ -1624,10 +1624,21 @@ tables:
outbytesleft = (bsize - old) * sizeof(unichar); outbytesleft = (bsize - old) * sizeof(unichar);
} }
rval = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); rval = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
if (rval == (size_t)-1 && errno != E2BIG) if (rval == (size_t)-1)
{ {
result = NO; if (errno == E2BIG)
break; {
unsigned old = bsize;
GROW();
outbuf = (char*)&ptr[dpos];
outbytesleft = (bsize - old) * sizeof(unichar);
}
else
{
result = NO;
break;
}
} }
dpos = (bsize * sizeof(unichar) - outbytesleft) / sizeof(unichar); dpos = (bsize * sizeof(unichar) - outbytesleft) / sizeof(unichar);
} }
@ -2133,9 +2144,17 @@ tables:
outbytesleft = (bsize - old); outbytesleft = (bsize - old);
} }
rval = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); rval = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
if (rval == (size_t)-1 && errno != E2BIG) if (rval == (size_t)-1)
{ {
if (errno == EILSEQ) if (errno == E2BIG)
{
unsigned old = bsize;
GROW();
outbuf = (char*)&ptr[dpos];
outbytesleft = (bsize - old);
}
else if (errno == EILSEQ)
{ {
if (strict == YES) if (strict == YES)
{ {
@ -2154,7 +2173,7 @@ tables:
inbytesleft -= sizeof(unichar); inbytesleft -= sizeof(unichar);
} }
} }
else if (errno != E2BIG) else
{ {
result = NO; result = NO;
break; break;