+ if (k == (size_t)(-1) || k == (size_t)(-2))
+ {
+ k = (k == (size_t)(-1)) ? 1 : n;
+ wc = replacement_char ();
+ }
+ if (arboreal && wc < M_TREE_MAX)
+ w = 1; /* hack */
+ else
+ {
+ if (!IsWPrint (wc))
+ wc = '?';
+ w = wcwidth (wc);
+ }
+ if (w >= 0)
+ {
+ if (w > max_width || (k2 = wcrtomb (scratch, wc, &mbstate2)) > destlen)