Opened 12 days ago

Closed 11 days ago

#15450 closed defect (fixed)

DGDS: Crash with German version on Speech bubbles

Reported by: windlepoons Owned by: mduggan
Priority: high Component: Engine: DGDS
Version: Keywords:
Cc: Game: Rise of the Dragon

Description

If the image with the speech bubble appears in the intro after the scrolling text, ScummVM crashes with Segmentation fault.
The same thing happens right at the beginning of the game (without the intro).:
Left-click on the sink (water is running), then right-click and left-click again.

The German version of Rise of the Dragon is therefore currently not playable.

ScummVM 2.9.0git10406-g83dae368205 (Nov 2 2024 04:10:23)
OS:Siduction (Debian/sid)

--

I have attached a log file from the GNU debugger.
The log at the bottom would be interesting:

Thread 1 "scummvm" received signal SIGSEGV, Segmentation fault.
0x0000555556c25790 in Dgds::PFont::getCharWidth(unsigned int) const ()
    at /data/src/engines/dgds/font.cpp:169
warning: 169	/data/src/engines/dgds/font.cpp: No such file or directory

Attachments (1)

GNU-Debugger_log.txt (87.9 KB ) - added by windlepoons 12 days ago.

Download all attachments as: .zip

Change History (4)

by windlepoons, 12 days ago

Attachment: GNU-Debugger_log.txt added

comment:1 by windlepoons, 12 days ago

The same problems exist with the German versions of The Adventures of Willy Beamish and Heart of China.

comment:2 by mduggan, 11 days ago

Thanks for the report, I've just pushed a change which might fix this because it fixes a potentially invalid pointer usage in that situation:
https://github.com/scummvm/scummvm/commit/53c16214080a6bf105704431a029d7660272f1ad

I'll take another look at this to be sure though.

comment:3 by mduggan, 11 days ago

Owner: set to mduggan
Resolution: fixed
Status: newclosed

In cea5b29f:

DGDS: Fix crash on German dgds intro

The font functions take u32 but that was sign-extending when coming out of a
non-u32 string. This never comes up in the English version, but the German
font has codepoints over 128.

Also fixed a couple of places where it was incorrectly measuring a string
position instead of a char value.

This fixes #15450.

Note: See TracTickets for help on using tickets.