fixed a bug in skipping an incomplete sequence upon eof
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
24
lib/tio.c
24
lib/tio.c
@ -115,7 +115,7 @@ int hawk_tio_attachin (
|
|||||||
|
|
||||||
if (hawk_tio_detachin(tio) <= -1) return -1;
|
if (hawk_tio_detachin(tio) <= -1) return -1;
|
||||||
|
|
||||||
HAWK_ASSERT (tio->in.fun == HAWK_NULL);
|
HAWK_ASSERT(tio->in.fun == HAWK_NULL);
|
||||||
|
|
||||||
xbufptr = bufptr;
|
xbufptr = bufptr;
|
||||||
if (xbufptr == HAWK_NULL)
|
if (xbufptr == HAWK_NULL)
|
||||||
@ -198,7 +198,7 @@ int hawk_tio_attachout (
|
|||||||
|
|
||||||
if (hawk_tio_detachout(tio) == -1) return -1;
|
if (hawk_tio_detachout(tio) == -1) return -1;
|
||||||
|
|
||||||
HAWK_ASSERT (tio->out.fun == HAWK_NULL);
|
HAWK_ASSERT(tio->out.fun == HAWK_NULL);
|
||||||
|
|
||||||
xbufptr = bufptr;
|
xbufptr = bufptr;
|
||||||
if (xbufptr == HAWK_NULL)
|
if (xbufptr == HAWK_NULL)
|
||||||
@ -282,7 +282,7 @@ hawk_ooi_t hawk_tio_flush (hawk_tio_t* tio)
|
|||||||
{
|
{
|
||||||
if (cur != tio->out.buf.ptr)
|
if (cur != tio->out.buf.ptr)
|
||||||
{
|
{
|
||||||
HAWK_MEMCPY (tio->out.buf.ptr, cur, left);
|
HAWK_MEMCPY(tio->out.buf.ptr, cur, left);
|
||||||
tio->outbuf_len = left;
|
tio->outbuf_len = left;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
@ -290,7 +290,7 @@ hawk_ooi_t hawk_tio_flush (hawk_tio_t* tio)
|
|||||||
if (n == 0)
|
if (n == 0)
|
||||||
{
|
{
|
||||||
if (cur != tio->out.buf.ptr)
|
if (cur != tio->out.buf.ptr)
|
||||||
HAWK_MEMCPY (tio->out.buf.ptr, cur, left);
|
HAWK_MEMCPY(tio->out.buf.ptr, cur, left);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,7 +320,7 @@ hawk_ooi_t hawk_tio_readbchars (hawk_tio_t* tio, hawk_bch_t* buf, hawk_oow_t siz
|
|||||||
hawk_oow_t nread;
|
hawk_oow_t nread;
|
||||||
hawk_ooi_t n;
|
hawk_ooi_t n;
|
||||||
|
|
||||||
/*HAWK_ASSERT (tio->in.fun != HAWK_NULL);*/
|
/*HAWK_ASSERT(tio->in.fun != HAWK_NULL);*/
|
||||||
if (tio->in.fun == HAWK_NULL)
|
if (tio->in.fun == HAWK_NULL)
|
||||||
{
|
{
|
||||||
/* no input function */
|
/* no input function */
|
||||||
@ -361,8 +361,7 @@ done:
|
|||||||
return nread;
|
return nread;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HAWK_INLINE hawk_ooi_t tio_read_uchars (
|
static HAWK_INLINE hawk_ooi_t tio_read_uchars (hawk_tio_t* tio, hawk_uch_t* buf, hawk_oow_t bufsize)
|
||||||
hawk_tio_t* tio, hawk_uch_t* buf, hawk_oow_t bufsize)
|
|
||||||
{
|
{
|
||||||
hawk_oow_t mlen, wlen;
|
hawk_oow_t mlen, wlen;
|
||||||
hawk_ooi_t n;
|
hawk_ooi_t n;
|
||||||
@ -389,6 +388,7 @@ static HAWK_INLINE hawk_ooi_t tio_read_uchars (
|
|||||||
* but some incomplete bytes in the buffer. */
|
* but some incomplete bytes in the buffer. */
|
||||||
if (tio->flags & HAWK_TIO_IGNOREECERR)
|
if (tio->flags & HAWK_TIO_IGNOREECERR)
|
||||||
{
|
{
|
||||||
|
wlen = 0;
|
||||||
goto ignore_illseq;
|
goto ignore_illseq;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -421,9 +421,9 @@ static HAWK_INLINE hawk_ooi_t tio_read_uchars (
|
|||||||
{
|
{
|
||||||
/* not even a single character was handled.
|
/* not even a single character was handled.
|
||||||
* shift bytes in the buffer to the head. */
|
* shift bytes in the buffer to the head. */
|
||||||
HAWK_ASSERT (mlen <= 0);
|
HAWK_ASSERT(mlen <= 0);
|
||||||
tio->inbuf_len = tio->inbuf_len - tio->inbuf_cur;
|
tio->inbuf_len = tio->inbuf_len - tio->inbuf_cur;
|
||||||
HAWK_MEMCPY (&tio->in.buf.ptr[0],
|
HAWK_MEMCPY(&tio->in.buf.ptr[0],
|
||||||
&tio->in.buf.ptr[tio->inbuf_cur],
|
&tio->in.buf.ptr[tio->inbuf_cur],
|
||||||
tio->inbuf_len * HAWK_SIZEOF(tio->in.buf.ptr[0]));
|
tio->inbuf_len * HAWK_SIZEOF(tio->in.buf.ptr[0]));
|
||||||
tio->inbuf_cur = 0;
|
tio->inbuf_cur = 0;
|
||||||
@ -435,7 +435,7 @@ static HAWK_INLINE hawk_ooi_t tio_read_uchars (
|
|||||||
else if (x == -2)
|
else if (x == -2)
|
||||||
{
|
{
|
||||||
/* buffer not large enough */
|
/* buffer not large enough */
|
||||||
HAWK_ASSERT (wlen > 0);
|
HAWK_ASSERT(wlen > 0);
|
||||||
|
|
||||||
/* the wide-character buffer is not just large enough to
|
/* the wide-character buffer is not just large enough to
|
||||||
* hold the entire conversion result. lets's go on so long as
|
* hold the entire conversion result. lets's go on so long as
|
||||||
@ -474,7 +474,7 @@ hawk_ooi_t hawk_tio_readuchars (hawk_tio_t* tio, hawk_uch_t* buf, hawk_oow_t siz
|
|||||||
hawk_oow_t nread = 0;
|
hawk_oow_t nread = 0;
|
||||||
hawk_ooi_t n;
|
hawk_ooi_t n;
|
||||||
|
|
||||||
/*HAWK_ASSERT (tio->in.fun != HAWK_NULL);*/
|
/*HAWK_ASSERT(tio->in.fun != HAWK_NULL);*/
|
||||||
if (tio->in.fun == HAWK_NULL)
|
if (tio->in.fun == HAWK_NULL)
|
||||||
{
|
{
|
||||||
/* no input handler function */
|
/* no input handler function */
|
||||||
@ -656,7 +656,7 @@ hawk_ooi_t hawk_tio_writeuchars (hawk_tio_t* tio, const hawk_uch_t* wptr, hawk_o
|
|||||||
{
|
{
|
||||||
/* insert a question mark for an illegal
|
/* insert a question mark for an illegal
|
||||||
* character. */
|
* character. */
|
||||||
HAWK_ASSERT (tio->outbuf_len < tio->out.buf.capa);
|
HAWK_ASSERT(tio->outbuf_len < tio->out.buf.capa);
|
||||||
tio->out.buf.ptr[tio->outbuf_len++] = '?';
|
tio->out.buf.ptr[tio->outbuf_len++] = '?';
|
||||||
wcnt++; /* skip this illegal character */
|
wcnt++; /* skip this illegal character */
|
||||||
/* don't need to increment mcnt since
|
/* don't need to increment mcnt since
|
||||||
|
Reference in New Issue
Block a user