Opened 4 years ago

Closed 4 years ago

#9731 closed defect (fixed)

SCI: KQ4: Crash when reading the message in a bottle

Reported by: Kurufinwe21 Owned by: csnover
Priority: normal Component: Engine: SCI
Version: Keywords:
Cc: Game: King's Quest 4

Description

When inside the whale, get the bottle, open it, and try to read the note inside: the game crashes with the following error message:

validateExportFunc(): pubfunct is invalid!

I'm attaching a save from inside the whale.

ScummVM 1.10.0git3056-g571f608192 (win32 daily build from the ScummVM website) running on Windows 10 (64 bit).

Game version: KQ4 SCI DOS English (from the RW Anthology).

Attachments (1)

kq4sci.007 (13.6 KB ) - added by Kurufinwe21 4 years ago.
Save file (inside the whale)

Download all attachments as: .zip

Change History (4)

by Kurufinwe21, 4 years ago

Attachment: kq4sci.007 added

Save file (inside the whale)

comment:1 by csnover, 4 years ago

The affected script is script 306. This script seems a bit odd: it has an exports block at the start with one entry (0x4bc), then immediately after that another exports block with two entries (0x4bc, 0x5c6). The game is trying to load export 1, which only exists in the second export block, but we currently only find and use the first export block.

comment:2 by bluegr, 4 years ago

This looks to be a regression: there is a heuristic which handles duplicate export tables in script.cpp, inside Script::validateExportFunc().

There is a comment that specifically mentions this script in KQ4. Perhaps this heuristic is now broken with the latest changes to the VM, and should be reviewed.

comment:3 by csnover, 4 years ago

Owner: set to csnover
Resolution: fixed
Status: newclosed

Fixed in a620b6c354a7eee9e521d7e94adc133b4d58b0a1. Thanks for the report!

(For future reference, the previous ticket for this problem is #5079.)

Note: See TracTickets for help on using tickets.