diff --git a/mozilla/layout/forms/nsListControlFrame.cpp b/mozilla/layout/forms/nsListControlFrame.cpp index 25fe540acab..0adc952c013 100644 --- a/mozilla/layout/forms/nsListControlFrame.cpp +++ b/mozilla/layout/forms/nsListControlFrame.cpp @@ -3448,7 +3448,6 @@ nsListControlFrame::KeyPress(nsIDOMEvent* aKeyEvent) PRUint32 charCode, keyCode; keyEvent->GetCharCode(&charCode); keyEvent->GetKeyCode(&keyCode); - charCode = (PRUint32)nsCRT::ToLower((char)charCode); if (charCode == 0) { // Backspace key will delete the last char in the string @@ -3458,6 +3457,8 @@ nsListControlFrame::KeyPress(nsIDOMEvent* aKeyEvent) return NS_OK; } + PRUnichar uniChar = ToLowerCase(NS_STATIC_CAST(PRUnichar, charCode)); + DOMTimeStamp keyTime; aKeyEvent->GetTimeStamp(&keyTime); @@ -3474,8 +3475,8 @@ nsListControlFrame::KeyPress(nsIDOMEvent* aKeyEvent) // Exception: If the user types the same key repeatedly, we'll cycle through all // options beginning with that char, rather than appending it. if (!(GetIncrementalString().Length() == 1 && - GetIncrementalString().First() == NS_STATIC_CAST(PRUnichar, charCode))) { - GetIncrementalString().Append(NS_STATIC_CAST(PRUnichar, charCode)); + GetIncrementalString().First() == uniChar)) { + GetIncrementalString().Append(uniChar); } // Determine where we're going to start reading the string diff --git a/mozilla/layout/html/forms/src/nsListControlFrame.cpp b/mozilla/layout/html/forms/src/nsListControlFrame.cpp index 25fe540acab..0adc952c013 100644 --- a/mozilla/layout/html/forms/src/nsListControlFrame.cpp +++ b/mozilla/layout/html/forms/src/nsListControlFrame.cpp @@ -3448,7 +3448,6 @@ nsListControlFrame::KeyPress(nsIDOMEvent* aKeyEvent) PRUint32 charCode, keyCode; keyEvent->GetCharCode(&charCode); keyEvent->GetKeyCode(&keyCode); - charCode = (PRUint32)nsCRT::ToLower((char)charCode); if (charCode == 0) { // Backspace key will delete the last char in the string @@ -3458,6 +3457,8 @@ nsListControlFrame::KeyPress(nsIDOMEvent* aKeyEvent) return NS_OK; } + PRUnichar uniChar = ToLowerCase(NS_STATIC_CAST(PRUnichar, charCode)); + DOMTimeStamp keyTime; aKeyEvent->GetTimeStamp(&keyTime); @@ -3474,8 +3475,8 @@ nsListControlFrame::KeyPress(nsIDOMEvent* aKeyEvent) // Exception: If the user types the same key repeatedly, we'll cycle through all // options beginning with that char, rather than appending it. if (!(GetIncrementalString().Length() == 1 && - GetIncrementalString().First() == NS_STATIC_CAST(PRUnichar, charCode))) { - GetIncrementalString().Append(NS_STATIC_CAST(PRUnichar, charCode)); + GetIncrementalString().First() == uniChar)) { + GetIncrementalString().Append(uniChar); } // Determine where we're going to start reading the string diff --git a/mozilla/xpcom/ds/nsCRT.cpp b/mozilla/xpcom/ds/nsCRT.cpp index bb1c400bb97..0fba583cb11 100644 --- a/mozilla/xpcom/ds/nsCRT.cpp +++ b/mozilla/xpcom/ds/nsCRT.cpp @@ -110,12 +110,12 @@ static const unsigned char kLower2Upper[256] = { char nsCRT::ToUpper(char aChar) { - return (char)kLower2Upper[aChar]; + return (char)kLower2Upper[(unsigned char)aChar]; } char nsCRT::ToLower(char aChar) { - return (char)kUpper2Lower[aChar]; + return (char)kUpper2Lower[(unsigned char)aChar]; } PRBool nsCRT::IsUpper(char aChar)