Opened 18 years ago

Closed 18 years ago

#2582 closed defect (fixed)

BASS regression: garbled text

Reported by: SF/clemty Owned by: eriktorbjorn
Priority: normal Component: Engine: Sky
Version: Keywords:
Cc: Game: Beneath a Steel Sky

Description

if you exit the furnace room in BASS and the language is set to German (similar thing happens with French too), the first line he says after climbing the stairs is garbled:

correct: "Wir sind auf dem Weg in die WOLKEN, Joey!" bug: "sdD Holographie von Galagher."

apparently the engine fetches the string from the wrong location.

this is a regression, first appeared in revision 19,743 (19,742 still has the correct output)

savegame + screenshots attached

Ticket imported from: #1478911. Ticket imported from: bugs/2582.

Attachments (3)

SKY-VM.000 (13.0 KB ) - added by SF/clemty 18 years ago.
furnace room, set language to german and exit rooms to see bug
nobug.png (101.0 KB ) - added by SF/clemty 18 years ago.
correct string
bug.jpg (46.1 KB ) - added by SF/clemty 18 years ago.
incorrect string

Download all attachments as: .zip

Change History (9)

by SF/clemty, 18 years ago

Attachment: SKY-VM.000 added

furnace room, set language to german and exit rooms to see bug

by SF/clemty, 18 years ago

Attachment: nobug.png added

correct string

comment:1 by SF/clemty, 18 years ago

Owner: set to joostp

by SF/clemty, 18 years ago

Attachment: bug.jpg added

incorrect string

comment:2 by SF/clemty, 18 years ago

btw this is still reproducible in current SVN builds for Windows XP and Linux (FC5/Athlon64)

comment:3 by fingolfin, 18 years ago

Rev 19743 was commited by lavosspawn (see <http://svn.sourceforge.net/ viewcvs.cgi/scummvm/?rev=19743&view=rev>).

comment:4 by fingolfin, 18 years ago

Owner: changed from joostp to lavosspawn

comment:5 by eriktorbjorn, 18 years ago

Owner: changed from lavosspawn to eriktorbjorn
Resolution: fixed
Status: newclosed

comment:6 by eriktorbjorn, 18 years ago

I see the problem. During a cleanup of Text::getText(), skipBytes was changed from uint32 to uint8. However that meant skipBytes could overflow in the following code fragment:

uint8 skipBytes = *blockPtr++; if (skipBytes & 0x80) { skipBytes &= 0x7F; skipBytes <<= 3; }

I've changed skipBytes to uint16.

Note: See TracTickets for help on using tickets.