aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/segment.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2010-05-19 08:50:24 +0000
committerFilippos Karapetis2010-05-19 08:50:24 +0000
commit174a043aa7459478326a771581d39f3480ca82f6 (patch)
tree9c627a18dc95fd39c46f39d8cf8f2a81217a6e17 /engines/sci/engine/segment.cpp
parent852cb16c49aaca1891d25e420ddf1459efa55ae8 (diff)
downloadscummvm-rg350-174a043aa7459478326a771581d39f3480ca82f6.tar.gz
scummvm-rg350-174a043aa7459478326a771581d39f3480ca82f6.tar.bz2
scummvm-rg350-174a043aa7459478326a771581d39f3480ca82f6.zip
Removed the exportsAreWide variable from the segment manager and save games, and moved validateExportFunc() in the Script class, thus resolving a TODO
svn-id: r49093
Diffstat (limited to 'engines/sci/engine/segment.cpp')
-rw-r--r--engines/sci/engine/segment.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/engines/sci/engine/segment.cpp b/engines/sci/engine/segment.cpp
index 0c6bb93aed..ab1a68d165 100644
--- a/engines/sci/engine/segment.cpp
+++ b/engines/sci/engine/segment.cpp
@@ -26,6 +26,7 @@
#include "common/endian.h"
#include "sci/sci.h"
+#include "sci/engine/features.h"
#include "sci/engine/segment.h"
#include "sci/engine/seg_manager.h"
#include "sci/engine/state.h"
@@ -366,22 +367,18 @@ void Script::setExportTableOffset(int offset) {
}
}
-// TODO: This method should be Script method. The only reason
-// that it isn't is that it uses _exportsAreWide, which is true if
-// detectLofsType() == SCI_VERSION_1_MIDDLE
-// Maybe _exportsAreWide should become a Script member var, e.g. set
-// by setExportTableOffset?
-uint16 SegManager::validateExportFunc(int pubfunct, SegmentId seg) {
- Script *scr = getScript(seg);
- if (scr->_numExports <= pubfunct) {
+uint16 Script::validateExportFunc(int pubfunct) {
+ bool exportsAreWide = (g_sci->_features->detectLofsType() == SCI_VERSION_1_MIDDLE);
+
+ if (_numExports <= pubfunct) {
warning("validateExportFunc(): pubfunct is invalid");
return 0;
}
- if (_exportsAreWide)
+ if (exportsAreWide)
pubfunct *= 2;
- uint16 offset = READ_SCI11ENDIAN_UINT16((byte *)(scr->_exportTable + pubfunct));
- VERIFY(offset < scr->_bufSize, "invalid export function pointer");
+ uint16 offset = READ_SCI11ENDIAN_UINT16((byte *)(_exportTable + pubfunct));
+ VERIFY(offset < _bufSize, "invalid export function pointer");
return offset;
}