/* This variable is used to count the number of characters we
actually converted. */
size_t converted = 0;
+ size_t last_converted;
/* We preserve the initial values of the pointer variables. */
const char *inptr = *inbuf;
outptr = outbuf;
/* Save the state. */
+ last_converted = converted;
#ifdef SAVE_RESET_STATE
SAVE_RESET_STATE (1);
#endif
/* Write out all output which was produced. */
if (outbuf > outptr)
{
- const char *outerr = outbuf;
+ const char *outerr = data->outbuf;
int result;
result = (*fct) (next_step, next_data, &outerr, outbuf,
outbuf = outptr;
/* Reset the state. */
+ converted = last_converted;
# ifdef SAVE_RESET_STATE
SAVE_RESET_STATE (0);
# endif
/* We must run out of output buffer space in this
rerun. */
- assert (nstatus == GCONV_FULL_OUTPUT
- && outbuf == outerr);
+ assert (outbuf == outerr);
+ assert (nstatus == GCONV_FULL_OUTPUT);
#endif /* reset input buffer */
}