(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
pull/155/head
Darkvater 20 years ago
parent 5a24ba51c8
commit 4713b11ffe

@ -765,7 +765,7 @@ void SetHScrollCount(Window *w, int num)
static void DelChar(Textbuf *tb) 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); memmove(tb->buf + tb->caretpos, tb->buf + tb->caretpos + 1, tb->length - tb->caretpos);
tb->length--; tb->length--;
} }
@ -781,7 +781,7 @@ bool DeleteTextBufferChar(Textbuf *tb, int delmode)
{ {
if (delmode == WKC_BACKSPACE && tb->caretpos != 0) { if (delmode == WKC_BACKSPACE && tb->caretpos != 0) {
tb->caretpos--; tb->caretpos--;
tb->caretxoffs -= GetCharacterWidth(tb->buf[tb->caretpos]); tb->caretxoffs -= GetCharacterWidth((byte)tb->buf[tb->caretpos]);
DelChar(tb); DelChar(tb);
return true; return true;
@ -829,13 +829,13 @@ bool MoveTextBufferPos(Textbuf *tb, int navmode)
case WKC_LEFT: case WKC_LEFT:
if (tb->caretpos != 0) { if (tb->caretpos != 0) {
tb->caretpos--; tb->caretpos--;
tb->caretxoffs -= GetCharacterWidth(tb->buf[tb->caretpos]); tb->caretxoffs -= GetCharacterWidth((byte)tb->buf[tb->caretpos]);
return true; return true;
} }
break; break;
case WKC_RIGHT: case WKC_RIGHT:
if (tb->caretpos < tb->length) { if (tb->caretpos < tb->length) {
tb->caretxoffs += GetCharacterWidth(tb->buf[tb->caretpos]); tb->caretxoffs += GetCharacterWidth((byte)tb->buf[tb->caretpos]);
tb->caretpos++; tb->caretpos++;
return true; return true;
} }

@ -609,7 +609,8 @@ uint CheckTunnelBusy(uint tile, int *length)
return (uint)-1; return (uint)-1;
} }
if (length) *length = len; if (length != NULL)
*length = len;
return tile; return tile;
} }

Loading…
Cancel
Save