Fix for bug #1945335: "SCUMM: Invalid charset id can be stored".
Regressions possible. svn-id: r33552
This commit is contained in:
parent
9034ce2a7c
commit
3047e084c1
4 changed files with 25 additions and 14 deletions
|
@ -277,7 +277,7 @@ CharsetRenderer::CharsetRenderer(ScummEngine *vm) {
|
|||
_disableOffsX = false;
|
||||
|
||||
_vm = vm;
|
||||
_curId = 0;
|
||||
_curId = -1;
|
||||
}
|
||||
|
||||
CharsetRenderer::~CharsetRenderer() {
|
||||
|
@ -289,11 +289,15 @@ CharsetRendererCommon::CharsetRendererCommon(ScummEngine *vm)
|
|||
_shadowColor = 0;
|
||||
}
|
||||
|
||||
void CharsetRendererCommon::setCurID(byte id) {
|
||||
void CharsetRendererCommon::setCurID(int32 id) {
|
||||
if (id == -1)
|
||||
return;
|
||||
|
||||
assertRange(0, id, _vm->_numCharsets - 1, "charset");
|
||||
|
||||
_curId = id;
|
||||
|
||||
debug(0, "boo %d", id);
|
||||
_fontPtr = _vm->getResourceAddress(rtCharset, id);
|
||||
if (_fontPtr == 0)
|
||||
error("CharsetRendererCommon::setCurID: charset %d not found!", id);
|
||||
|
@ -308,7 +312,10 @@ void CharsetRendererCommon::setCurID(byte id) {
|
|||
_numChars = READ_LE_UINT16(_fontPtr + 2);
|
||||
}
|
||||
|
||||
void CharsetRendererV3::setCurID(byte id) {
|
||||
void CharsetRendererV3::setCurID(int32 id) {
|
||||
if (id == -1)
|
||||
return;
|
||||
|
||||
assertRange(0, id, _vm->_numCharsets - 1, "charset");
|
||||
|
||||
_curId = id;
|
||||
|
@ -668,7 +675,8 @@ void CharsetRenderer::translateColor() {
|
|||
|
||||
void CharsetRenderer::saveLoadWithSerializer(Serializer *ser) {
|
||||
static const SaveLoadEntry charsetRendererEntries[] = {
|
||||
MKLINE(CharsetRenderer, _curId, sleByte, VER(73)),
|
||||
MKLINE_OLD(CharsetRenderer, _curId, sleByte, VER(73), VER(73)),
|
||||
MKLINE(CharsetRenderer, _curId, sleInt32, VER(74)),
|
||||
MKLINE(CharsetRenderer, _color, sleByte, VER(73)),
|
||||
MKEND()
|
||||
};
|
||||
|
@ -988,7 +996,10 @@ CharsetRendererNut::~CharsetRendererNut() {
|
|||
}
|
||||
}
|
||||
|
||||
void CharsetRendererNut::setCurID(byte id) {
|
||||
void CharsetRendererNut::setCurID(int32 id) {
|
||||
if (id == -1)
|
||||
return;
|
||||
|
||||
int numFonts = ((_vm->_game.id == GID_CMI) && (_vm->_game.features & GF_DEMO)) ? 4 : 5;
|
||||
assert(id < numFonts);
|
||||
_curId = id;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue