From 66fb9e7a90874e27486db98f0eb8d6f0512a00c5 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Mon, 28 Jun 2010 14:46:28 +0000 Subject: [PATCH] SCI: fixing valgrind issue in Script::initialiseClasses thx to wjp for valgrind testing svn-id: r50446 --- engines/sci/engine/script.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp index bc63afece5b..4100ca64485 100644 --- a/engines/sci/engine/script.cpp +++ b/engines/sci/engine/script.cpp @@ -410,12 +410,14 @@ void Script::initialiseClasses(SegManager *segMan) { if (!seeker) return; + uint16 marker; + bool isClass; + uint16 classpos = seeker - _buf; + int16 species = 0; + while (true) { // In SCI0-SCI1, this is the segment type. In SCI11, it's a marker (0x1234) - uint16 marker = READ_SCI11ENDIAN_UINT16(seeker); - bool isClass; - uint16 classpos = seeker - _buf; - int16 species; + marker = READ_SCI11ENDIAN_UINT16(seeker); if (!marker) break; @@ -425,7 +427,8 @@ void Script::initialiseClasses(SegManager *segMan) { species = READ_SCI11ENDIAN_UINT16(seeker + 10); } else { isClass = (marker == SCI_OBJ_CLASS); - species = READ_SCI11ENDIAN_UINT16(seeker + 12); + if (isClass) + species = READ_SCI11ENDIAN_UINT16(seeker + 12); classpos += 12; }