diff -ruN kdelibs-3.5.7-orig/kdeui/kpassdlg.cpp kdelibs-3.5.7/kdeui/kpassdlg.cpp --- kdelibs-3.5.7-orig/kdeui/kpassdlg.cpp 2007-01-15 14:34:22 +0300 +++ kdelibs-3.5.7/kdeui/kpassdlg.cpp 2007-05-30 16:18:19 +0400 @@ -206,8 +206,12 @@ if (e->state() & (ControlButton | AltButton)) e->ignore(); else if (m_Length) { - m_Password[--m_Length] = '\000'; - showPass(); + QString newStr = QString::fromLocal8Bit(m_Password, m_Length); + unsigned int newLen = newStr.length(); + newLen = newLen ? newLen - 1 : 0; + newStr.setLength(newLen); + erase(); + insert(newStr); } break; default: @@ -263,14 +267,15 @@ void KPasswordEdit::showPass() { QString tmp; + QString newStr = QString::fromLocal8Bit(m_Password, m_Length); switch (m_EchoMode) { case OneStar: - tmp.fill('*', m_Length); + tmp.fill('*', newStr.length()); setText(tmp); break; case ThreeStars: - tmp.fill('*', m_Length*3); + tmp.fill('*', newStr.length()*3); setText(tmp); break; case NoEcho: default: