Fix narrow_to_wide_c (ANDROID)
authorCraig Robbins <kde.psych@gmail.com>
Mon, 2 Mar 2015 03:16:01 +0000 (13:16 +1000)
committerLoic Blot <loic.blot@unix-experience.fr>
Sun, 15 Mar 2015 09:17:09 +0000 (10:17 +0100)
* Ensure converted string is NUL terminated
* Restore logic to that used prior to 9e2a9b5

src/util/string.cpp

index de669b473e95c3f0749026512141f0c38531d8ee..a29bce94bf7e4913c320944a65e17668b7666562 100644 (file)
@@ -78,16 +78,18 @@ const wchar_t *narrow_to_wide_c(const char *mbs)
        size_t mbl = strlen(mbs);
        wchar_t *wcs = new wchar_t[mbl + 1];
 
-       for (size_t i = 0; i < mbl; i++) {
+       size_t i, dest_i = 0;
+       for (i = 0; i < mbl; i++) {
                if (((unsigned char) mbs[i] > 31) &&
                                ((unsigned char) mbs[i] < 127)) {
-                       wcs[i] = wide_chars[(unsigned char) mbs[i] - 32];
+                       wcs[dest_i++] = wide_chars[(unsigned char) mbs[i] - 32];
                }
                //handle newline
                else if (mbs[i] == '\n') {
-                       wcs[i] = L'\n';
+                       wcs[dest_i++] = L'\n';
                }
        }
+       wcs[dest_i] = '\0';
 
        return wcs;
 }