Opened 18 years ago
Closed 18 years ago
#2887 closed defect (fixed)
FT: Crash when going on the road
Reported by: | (none) | Owned by: | fingolfin |
---|---|---|---|
Priority: | normal | Component: | Engine: SCUMM |
Version: | Keywords: | ||
Cc: | Game: | Full Throttle |
Description
ScummVM 0.10.0svn (Oct 29 2006 17:06:54) Features compiled in: Vorbis FLAC MP3 zLib MPEG2
When Ben goes riding on the road (highway) the game crashes with an assertion "_dataSize > 0" failed: file "engines/scumm/smush/saud_channel.cpp", line 175
English (Version A) Talkie-CD
AmigaOS4 gcc version 4.0.2 (AmigaOS build 20051012)
This bug must have been introduced lately it wasn't there in the pre0.9.1 SVN's
Ticket imported from: #1586894. Ticket imported from: bugs/2887.
Attachments (2)
Change History (10)
by , 18 years ago
comment:1 by , 18 years ago
Likely caused by my recent SMUSH cleanup. Haven't had time to look into this yet, though.
comment:2 by , 18 years ago
Works for me with revision 24541, but not 24542. The commit message was "SCUMM: Further SMUSH audio channel cleanup; this time unified some code, and got rid of one set of memory buffers".
comment:3 by , 18 years ago
Simply removing the assert() allowed me to get across the gorge. The only thing I noticed was that the music kept playing in a scene where I'm not sure it should have.
But I don't understand the SMUSH player anywhere near enough to commit a change like that, because I assume the assertion was added for a reason...
comment:4 by , 18 years ago
That assert wasn't added, it was there before (just in the form of an if(...) error(...); statement).
If it triggers, then that means that the channel believes it has run out of data. Normally, if you remove the assert I'd expect lots of static ?!? but maybe I messed up some part of the internal logic during my rewrite.
comment:5 by , 18 years ago
Oh wait, I missed that the error is in SaudChannel, were the assert wasn't there before, and which I switched from 16 bit stereo to 8bit mono. So it might well be that something went wrong while doing that conversion.
comment:6 by , 18 years ago
For me, the error only happens when going towards the mink farm, not the gorge. The _dataSize variable is initialized to -1 by the SaudChannel constructor, and then to -2 by SaudChannel::setParameters(). After that, getSoundData() is called repeatedly, but _dataSize remains unchanged.
(I'm using compressed files, if that makes any difference.)
comment:7 by , 18 years ago
You are right. I changed it to only assert when _keepSize is set to false. Alas, that code still is in need of further cleanup, I'd say :)
comment:8 by , 18 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Debug log (-d3)