Opened 13 years ago

Closed 13 years ago

#2582 closed defect (fixed)

BASS regression: garbled text

Reported by: SF/clemty Owned by: eriktorbjorn
Priority: normal Component: Engine: Sky
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 13 years ago.
furnace room, set language to german and exit rooms to see bug
nobug.png (101.0 KB) - added by SF/clemty 13 years ago.
correct string
bug.jpg (46.1 KB) - added by SF/clemty 13 years ago.
incorrect string

Download all attachments as: .zip

Change History (9)

Changed 13 years ago by SF/clemty

Attachment: SKY-VM.000 added

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

Changed 13 years ago by SF/clemty

Attachment: nobug.png added

correct string

comment:1 Changed 13 years ago by SF/clemty

Owner: set to joostp

Changed 13 years ago by SF/clemty

Attachment: bug.jpg added

incorrect string

comment:2 Changed 13 years ago by SF/clemty

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

comment:3 Changed 13 years ago by fingolfin

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

comment:4 Changed 13 years ago by fingolfin

Owner: changed from joostp to lavosspawn

comment:5 Changed 13 years ago by eriktorbjorn

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

comment:6 Changed 13 years ago by eriktorbjorn

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.