#10531 closed defect (fixed)

MOHAWK: MYST: Crash when opening map mech age brother rooms

Reported by: dafioram Owned by: bgK
Priority: normal Component: Engine: Mohawk
Keywords: Cc:
Game: Myst

Description

When in the mechnical age if you open up either brother rooms and open the map while the doors are opening then scummvm throws an array out of bounds error.

#0  0x00007ffff4718e97 in __GI_raise (sig=sig@entry=6)
    at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff471a801 in __GI_abort () at abort.c:79
#2  0x00007ffff470a39a in __assert_fail_base (fmt=0x7ffff48917d8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x5555558743b8 "idx < _size", file=file@entry=0x5555558743a7 "./common/array.h", line=line@entry=192, function=function@entry=0x555555874640 <Common::Array<Mohawk::MystArea*>::operator[](unsigned int)::__PRETTY_FUNCTION__> "T& Common::Array<T>::operator[](Common::Array<T>::size_type) [with T = Mohawk::MystArea*; Common::Array<T>::size_type = unsigned int]") at assert.c:92
#3  0x00007ffff470a412 in __GI___assert_fail (assertion=0x5555558743b8 "idx < _size", file=0x5555558743a7 "./common/array.h", line=192, function=0x555555874640 <Common::Array<Mohawk::MystArea*>::operator[](unsigned int)::__PRETTY_FUNCTION__> "T& Common::Array<T>::operator[](Common::Array<T>::size_type) [with T = Mohawk::MystArea*; Common::Array<T>::size_type = unsigned int]") at assert.c:101
#4  0x00005555555ff046 in Common::Array<Mohawk::MystArea*>::operator[](unsigned int) (this=0x555555da0c38, idx=4) at ./common/array.h:192
#5  0x000055555561c3db in Mohawk::MystStacks::Mechanical::o_throneEnablePassage(unsigned short, Common::Array<unsigned short> const&) (this=0x555555e6a910, var=1, args=...) at engines/mohawk/myst_stacks/mechanical.cpp:301
#6  0x000055555561f670 in Common::Functor2Mem<unsigned short, Common::Array<unsigned short> const&, void, Mohawk::MystStacks::Mechanical>::operator()(unsigned short, Common::Array<unsigned short> const&) const (this=0x5555562f18d0, v1=1, v2
=...) at ./common/func.h:507
#7  0x000055555560c3a2 in Mohawk::MystScriptParser::runOpcode(unsigned short, unsigned short, Common::Array<unsigned short> const&) (this=0x555555e6a910, op=100, var=1, args=...) at engines/mohawk/myst_scripts.cpp:193
#8  0x000055555560c22b in Mohawk::MystScriptParser::runScript(Common::SharedPtr<Common::Array<Mohawk::MystScriptEntry> >, Mohawk::MystArea*) (this=0x555555e6a910, script=..., invokingResource=0x555555e4b9a0)
    at engines/mohawk/myst_scripts.cpp:177
#9  0x0000555555602ccc in Mohawk::MystAreaAction::handleMouseUp() (this=0x555555e4b9a0) at engines/mohawk/myst_areas.cpp:149
#10 0x0000555555603d74 in Mohawk::MystAreaActionSwitch::doSwitch(void (Mohawk::MystArea::*)()) (this=0x5555562f0de0, handler=&virtual Mohawk::MystArea::handleMouseUp()) at engines/mohawk/myst_areas.cpp:325
#11 0x0000555555603e46 in Mohawk::MystAreaActionSwitch::handleMouseUp() (this=0x5555562f0de0) at engines/mohawk/myst_areas.cpp:341
#12 0x00005555555fc32b in Mohawk::MohawkEngine_Myst::checkCurrentResource() (this=0x555555da0b70) at engines/mohawk/myst.cpp:764
#13 0x00005555555fb117 in Mohawk::MohawkEngine_Myst::doFrame() (this=0x555555da0b70) at engines/mohawk/myst.cpp:492
#14 0x00005555555faac3 in Mohawk::MohawkEngine_Myst::run() (this=0x555555da0b70) at engines/mohawk/myst.cpp:386
#15 0x00005555555b3c0b in runGame(Plugin const*, OSystem&, Common::String const&) (plugin=0x555555cd90e0, system=..., edebuglevels=...) at base/main.cpp:264
#16 0x00005555555b4e31 in scummvm_main(int, char const* const*) (argc=1, argv=0x7fffffffdfb8) at base/main.cpp:530
#17 0x00005555555b1c8e in main(int, char**) (argc=1, argv=0x7fffffffdfb8)
    at backends/platform/sdl/posix/posix-main.cpp:45

Change History (1)

comment:1 by bgK, 17 months ago

Owner: set to bgK
Resolution: fixed
Status: newclosed

Thanks for your report, this was fixed in commit 6798f9c77ebe9c436c16cd1525554eb49bc1ba1d.

Note: See TracTickets for help on using tickets.