diff options
author | Craig Robbins <kde.psych@gmail.com> | 2015-03-02 13:16:01 +1000 |
---|---|---|
committer | Craig Robbins <kde.psych@gmail.com> | 2015-03-02 13:16:01 +1000 |
commit | aefe80769bc515e0ddbfc734d41de396aca1259c (patch) | |
tree | 96b76eedb7db86e4d7b03ffe98145b896cc625e7 | |
parent | 773aa8c57b70dd85273cb61286f8be577b4ca3aa (diff) | |
download | minetest-aefe80769bc515e0ddbfc734d41de396aca1259c.tar.gz minetest-aefe80769bc515e0ddbfc734d41de396aca1259c.tar.bz2 minetest-aefe80769bc515e0ddbfc734d41de396aca1259c.zip |
Fix narrow_to_wide_c (ANDROID)
* Ensure converted string is NUL terminated
* Restore logic to that used prior to 9e2a9b5
-rw-r--r-- | src/util/string.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/util/string.cpp b/src/util/string.cpp index 9e2123d59..c48abe835 100644 --- a/src/util/string.cpp +++ b/src/util/string.cpp @@ -83,16 +83,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; } |