handle invalid characters properly
This commit is contained in:
@@ -535,7 +535,7 @@ std::string Window::GetString(const std::string &base, size_t length, size_t wid
|
|||||||
if (x < maxx)
|
if (x < maxx)
|
||||||
{
|
{
|
||||||
real_x++;
|
real_x++;
|
||||||
x += wcwidth((*tmp)[beginning+real_x-minx-1]);
|
x += std::max(wcwidth((*tmp)[beginning+real_x-minx-1]), 1);
|
||||||
}
|
}
|
||||||
else if (beginning < maxbeginning)
|
else if (beginning < maxbeginning)
|
||||||
beginning++;
|
beginning++;
|
||||||
@@ -551,7 +551,7 @@ std::string Window::GetString(const std::string &base, size_t length, size_t wid
|
|||||||
if (x > minx)
|
if (x > minx)
|
||||||
{
|
{
|
||||||
real_x--;
|
real_x--;
|
||||||
x -= wcwidth((*tmp)[beginning+real_x-minx]);
|
x -= std::max(wcwidth((*tmp)[beginning+real_x-minx]), 1);
|
||||||
}
|
}
|
||||||
else if (beginning > 0)
|
else if (beginning > 0)
|
||||||
beginning--;
|
beginning--;
|
||||||
@@ -940,9 +940,7 @@ std::wstring ToWString(const std::string &s)
|
|||||||
|
|
||||||
size_t Window::Length(const std::wstring &ws)
|
size_t Window::Length(const std::wstring &ws)
|
||||||
{
|
{
|
||||||
size_t length = 0;
|
int len = wcswidth(ws.c_str(), -1);
|
||||||
for (std::wstring::const_iterator it = ws.begin(); it != ws.end(); ++it)
|
return len < 0 ? ws.length() : len;
|
||||||
length += wcwidth(*it);
|
|
||||||
return length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user