Opened 17 years ago

Closed 16 years ago

Last modified 6 years ago

#3657 closed defect (fixed)

PASS: Game crash when finishing Indy3 demo

Reported by: SF/simsaw Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Version: Keywords:
Cc: Game: Indiana Jones 3

Description

In Passport to Adventure the game suddenly crashs after you selected travelling to Venice when you collected everything you need to finish the Indy3 demo.

I added a savegame where you only need to click on Travel/To the Plane to Venice.

I tested with the Daily Build for Windows of March 18 2008.

Ticket imported from: #1917981. Ticket imported from: bugs/3657.

Attachments (1)

pass.s01 (11.2 KB ) - added by SF/simsaw 17 years ago.
Savegame for travelling to Venice

Download all attachments as: .zip

Change History (6)

by SF/simsaw, 17 years ago

Attachment: pass.s01 added

Savegame for travelling to Venice

comment:1 by Kirben, 17 years ago

The exact error is: Assertion failed: WIO_INVENTORY == whereIsObject(obj), file engines/scumm/object.cpp, line 179

And that assert was added to engines/scumm/object.cpp by fingolfin, in revision 28886.

comment:2 by Kirben, 17 years ago

Owner: set to fingolfin

comment:3 by fingolfin, 16 years ago

The problem is caused by script 94, which is meant to empty the inventory, but does it in a bad way: Local[2] = getInventoryCount(VAR_EGO) Local[1] = 1; Local[0] = findInventory(VAR_EGO,Local[1]) setOwnerOf(Local[0],0) Local[1]++; unless (Local[1] > Local[2]) goto 000A; stopObjectCode()

In this particular case, the inventory contains four objects; and the script remove obj 1, 2, 3 ... at which point the crash happens, because after remove two objs, only two remain in the inventory, so it's not possible to remove item 3.

I added a workaround.

comment:4 by fingolfin, 16 years ago

Resolution: fixed
Status: newclosed

comment:5 by digitall, 6 years ago

Component: Engine: SCUMM
Game: Indiana Jones 3
Note: See TracTickets for help on using tickets.