fall back to len() if wcswidth returns negative value
@@ -2,4 +2,9 @@ cdef extern from "wchar.h":
cdef int wcswidth(const Py_UNICODE *str, size_t n)
def swidth(s):
- return wcswidth(s, len(s))
+ str_len = len(s)
+ terminal_width = wcswidth(s, str_len)
+ if terminal_width >= 0:
+ return terminal_width
+ else:
+ return str_len