(svn r1923) - Fix: [ 1155696 ] Crash with german umlauts in station names. The width was not calculated using unsigned values, so all characters above 128 were "negative"
authorDarkvater
Fri, 04 Mar 2005 00:14:28 +0000
changeset 1419 87baab2cfda7
parent 1418 f71b68950a6f
child 1420 83e74e76f600
(svn r1923) - Fix: [ 1155696 ] Crash with german umlauts in station names. The width was not calculated using unsigned values, so all characters above 128 were "negative"
- Codechange: a more proper check for a null pointer in tunnelbridge_cmd.c should have gone in with the previous commit
misc_gui.c
tunnelbridge_cmd.c
--- a/misc_gui.c	Thu Mar 03 23:26:35 2005 +0000
+++ b/misc_gui.c	Fri Mar 04 00:14:28 2005 +0000
@@ -765,7 +765,7 @@
 
 static void DelChar(Textbuf *tb)
 {
-	tb->width -= GetCharacterWidth(tb->buf[tb->caretpos]);
+	tb->width -= GetCharacterWidth((byte)tb->buf[tb->caretpos]);
 	memmove(tb->buf + tb->caretpos, tb->buf + tb->caretpos + 1, tb->length - tb->caretpos);
 	tb->length--;
 }
@@ -781,7 +781,7 @@
 {
 	if (delmode == WKC_BACKSPACE && tb->caretpos != 0) {
 		tb->caretpos--;
-		tb->caretxoffs -= GetCharacterWidth(tb->buf[tb->caretpos]);
+		tb->caretxoffs -= GetCharacterWidth((byte)tb->buf[tb->caretpos]);
 
 		DelChar(tb);
 		return true;
@@ -829,13 +829,13 @@
 	case WKC_LEFT:
 		if (tb->caretpos != 0) {
 			tb->caretpos--;
-			tb->caretxoffs -= GetCharacterWidth(tb->buf[tb->caretpos]);
+			tb->caretxoffs -= GetCharacterWidth((byte)tb->buf[tb->caretpos]);
 			return true;
 		}
 		break;
 	case WKC_RIGHT:
 		if (tb->caretpos < tb->length) {
-			tb->caretxoffs += GetCharacterWidth(tb->buf[tb->caretpos]);
+			tb->caretxoffs += GetCharacterWidth((byte)tb->buf[tb->caretpos]);
 			tb->caretpos++;
 			return true;
 		}
--- a/tunnelbridge_cmd.c	Thu Mar 03 23:26:35 2005 +0000
+++ b/tunnelbridge_cmd.c	Fri Mar 04 00:14:28 2005 +0000
@@ -609,7 +609,8 @@
 		return (uint)-1;
 	}
 
-	if (length) *length = len;
+	if (length != NULL)
+		*length = len;
 	return tile;
 }