- charstring_push_back_chars (dest, altstr ? altstr : str, char_len, w);
- max -= w;
- str += char_len;
- altstr = NULL;
+ w = wcwidth(wide_char);
+ assert(w >= 0);
+ if (max >= (size_t) w) {
+ charstring_push_back_chars (dest, altstr ? altstr : str, char_len, w);
+ max -= w;
+ str += char_len;
+ altstr = NULL;
+ } else {
+ /* Not enough width available for the last character. Output
+ space(s) to fill. */
+ while (max-- > 0) {
+ charstring_push_back (dest, ' ');
+ }
+ break;
+ }