- retval = mem_iconveha ((const char *) src, srclen * sizeof (UNIT),
- UTF_NAME, tocode,
- handler == iconveh_question_mark, handler,
- scaled_offsets, resultp, lengthp);
+ result = resultbuf;
+ length = *lengthp;
+ if (mem_iconveha ((const char *) src, srclen * sizeof (UNIT),
+ UTF_NAME, tocode,
+ handler == iconveh_question_mark, handler,
+ scaled_offsets, &result, &length) < 0)
+ {
+ int saved_errno = errno;
+ free (scaled_offsets);
+ errno = saved_errno;
+ return NULL;
+ }