glong in_pos, ret;
if (len < 0)
- len = strlen (str);
+ len = (glong) strlen (str);
in_pos = 0;
ret = 0;
/* Common case */
- for (in_pos = 0; in_pos < len && str [in_pos] < 0x80; in_pos++)
+ for (in_pos = 0; in_pos < len && (guchar) str [in_pos] < 0x80; in_pos++)
ret ++;
- if (in_pos == len)
+ if (in_pos == len) {
+ if (items_read)
+ *items_read = in_pos;
return ret;
+ }
mb_size = 0;
mb_remain = 0;
*error = NULL;
if (len < 0)
- len = strlen (str);
+ len = (glong) strlen (str);
+ if (items_read)
+ *items_read = 0;
if (items_written)
*items_written = 0;
utf16_len = utf8_to_utf16_len (str, len, items_read, error);
out_pos = 0;
surrogate = FALSE;
+ if (items_read)
+ *items_read = 0;
if (items_written)
*items_written = 0;
utf8_len = utf16_to_utf8_len (str, len, items_read, error);
} else {
surrogate = 0;
/* invalid surrogate pair */
+ ++in_pos;
continue;
}
} else {
else if (ch >= 0xD800 && ch <= 0xDBFF)
surrogate = ch;
else if (ch >= 0xDC00 && ch <= 0xDFFF) {
+ ++in_pos;
/* invalid surrogate pair */
continue;
}