[KERNEL32]
authorKamil Hornicek <kamil.hornicek@reactos.org>
Mon, 16 Mar 2015 19:00:57 +0000 (19:00 +0000)
committerKamil Hornicek <kamil.hornicek@reactos.org>
Mon, 16 Mar 2015 19:00:57 +0000 (19:00 +0000)
- don't garble the output with invalid data in WideCharToUtf7
- fixes whopping 65536 failed tests and as a result Testman shouldn't choke on kernel32:codepage anymore

svn path=/trunk/; revision=66742

reactos/dll/win32/kernel32/winnls/string/nls.c

index f88be12..5cbd807 100644 (file)
@@ -1654,12 +1654,12 @@ static INT WideCharToUtf7(LPCWSTR pszWide, INT cchWide, LPSTR pszUtf7, INT cchUt
             }
             *pszUtf7++ = base64[wsz[0] >> 10];
             *pszUtf7++ = base64[(wsz[0] >> 4) & 0x3F];
-            *pszUtf7++ = base64[(wsz[0] << 2 | wsz[1] >> 14) & 0x3F];
+            *pszUtf7++ = base64[(wsz[0] << 2 | (n >= 2 ? wsz[1] >> 14 : 0)) & 0x3F];
             if (n >= 2)
             {
                 *pszUtf7++ = base64[(wsz[1] >> 8) & 0x3F];
                 *pszUtf7++ = base64[(wsz[1] >> 2) & 0x3F];
-                *pszUtf7++ = base64[(wsz[1] << 4 | wsz[2] >> 12) & 0x3F];
+                *pszUtf7++ = base64[(wsz[1] << 4 | (n >= 3 ? wsz[2] >> 12 : 0)) & 0x3F];
                 if (n >= 3)
                 {
                     *pszUtf7++ = base64[(wsz[2] >> 6) & 0x3F];