CH_ZERO
if (ch == sep && sep != CH_ZERO)
int has_sep = (sep != CH_ZERO);
*q = CH_ZERO;
if ((sep != CH_ZERO && (size_t)buflen > SIZE_MAX / 3)
|| (sep == CH_ZERO && (size_t)buflen > (SIZE_MAX - 1) / 2)) {
tmp_n = (sep != CH_ZERO) ? (size_t)buflen * 3 : 1 + (size_t)buflen * 2;
ret[maxlen] = CH_ZERO;
for (p = str; maxlen-- != 0 && *p != CH_ZERO; ++p)
*dst = CH_ZERO;