--- rxvt-unicode/src/rxvtperl.xs 2006/07/06 23:48:11 1.102 +++ rxvt-unicode/src/rxvtperl.xs 2006/08/21 15:11:46 1.105 @@ -270,6 +270,9 @@ overlay::overlay (rxvt_term *THIS, int x_, int y_, int w_, int h_, rend_t rstyle, int border) : THIS(THIS), x(x_), y(y_), w(w_), h(h_), border(border == 2), overlay_av (0) { + if (w < 0) w = 0; + if (h < 0) h = 0; + if (border == 2) { w += 2; @@ -1121,7 +1124,14 @@ wchar_t *wstr = sv2wcs (str); rxvt_push_locale (THIS->locale); - RETVAL = wcswidth (wstr, wcslen (wstr)); + RETVAL = 0; + for (wchar_t *wc = wstr; *wc; wc++) + { + int w = WCWIDTH (*wc); + + if (w) + RETVAL += min (w, 1); + } rxvt_pop_locale (); free (wstr);