summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-03-26 11:50:53 +0000
committerrubidium <rubidium@openttd.org>2008-03-26 11:50:53 +0000
commit3d8bd6245ee0f1813f0f01d56cd63aab46facbb7 (patch)
tree04dec6e0f8d968041a6e0fcf06340fec448fdbfd
parentf241b0acd47e1568e6c737bf47b0e097eaad1e9d (diff)
downloadopenttd-3d8bd6245ee0f1813f0f01d56cd63aab46facbb7.tar.xz
(svn r12428) -Fix [FS#1878]: loading from the config file could fail even when the data is correct. Patch by Dominik.
-rw-r--r--src/osk_gui.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/osk_gui.cpp b/src/osk_gui.cpp
index 42ff5b5bf..80a87edd5 100644
--- a/src/osk_gui.cpp
+++ b/src/osk_gui.cpp
@@ -299,14 +299,22 @@ void GetKeyboardLayout()
if (StrEmpty(_keyboard_opt[1])) {
GetString(keyboard[1], STR_OSK_KEYBOARD_LAYOUT_CAPS, lastof(keyboard[1]));
} else {
- strncpy(keyboard[0], _keyboard_opt[0], lengthof(keyboard[1]));
+ strncpy(keyboard[1], _keyboard_opt[1], lengthof(keyboard[1]));
}
for (uint j = 0; j < 2; j++) {
const char *kbd = keyboard[j];
+ bool ended = false;
for (uint i = 0; i < OSK_KEYBOARD_ENTRIES; i++) {
_keyboard[j][i] = Utf8Consume(&kbd);
+ /* Be lenient when the last characters are missing (is quite normal) */
+ if (_keyboard[j][i] == '\0' || ended) {
+ ended = true;
+ _keyboard[j][i] = ' ';
+ continue;
+ }
+
if (IsPrintable(_keyboard[j][i])) {
errormark[j][i] = ' ';
} else {