struct charset_emit_param {
char *output;
int outlen;
+ int writtenlen;
int stopped;
};
{
struct charset_emit_param *param = (struct charset_emit_param *)ctx;
- if (param->outlen > 0) {
- *param->output++ = output;
- param->outlen--;
+ if (param->outlen != 0) {
+ if (param->output)
+ *param->output++ = output;
+ if (param->outlen > 0)
+ param->outlen--;
+ param->writtenlen++;
} else {
param->stopped = 1;
}
param.output = output;
param.outlen = outlen;
+ param.writtenlen = 0;
param.stopped = 0;
if (state)
*error = FALSE;
while (*inlen > 0) {
- int lenbefore = param.output - output;
+ int lenbefore = param.writtenlen;
int ret;
if (input)
(*input)++;
(*inlen)--;
}
- return param.output - output;
+ return param.writtenlen;
}