From f3e81b5f17872186f7c67a551876dd78f268865c Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Wed, 22 Mar 2017 04:11:49 +0200 Subject: FULLPIPE: Use Common::String in all scene object names --- engines/fullpipe/behavior.cpp | 10 +++++----- engines/fullpipe/gfx.cpp | 6 +----- engines/fullpipe/gfx.h | 6 +++--- engines/fullpipe/interaction.cpp | 11 ++++------- engines/fullpipe/interaction.h | 2 +- engines/fullpipe/motion.cpp | 11 +++++------ engines/fullpipe/motion.h | 2 +- engines/fullpipe/objects.h | 4 ++-- engines/fullpipe/scene.cpp | 28 +++++++++++----------------- engines/fullpipe/scene.h | 4 ++-- engines/fullpipe/sound.cpp | 4 ++-- engines/fullpipe/stateloader.cpp | 29 +++++++++++------------------ engines/fullpipe/statics.cpp | 8 ++++---- engines/fullpipe/utils.cpp | 25 ++++++++++++++----------- engines/fullpipe/utils.h | 4 ++-- 15 files changed, 68 insertions(+), 86 deletions(-) (limited to 'engines') diff --git a/engines/fullpipe/behavior.cpp b/engines/fullpipe/behavior.cpp index 80542afcb6..694f7d0799 100644 --- a/engines/fullpipe/behavior.cpp +++ b/engines/fullpipe/behavior.cpp @@ -64,13 +64,13 @@ void BehaviorManager::initBehavior(Scene *sc, GameVar *var) { for (GameVar *subvar = behvar->_subVars; subvar; subvar = subvar->_nextVarObj) { debugC(3, kDebugBehavior, "BehaviorManager::initBehavior. subVar %s", transCyrillic(subvar->_varName)); - if (!strcmp(subvar->_varName, "AMBIENT")) { + if (subvar->_varName == "AMBIENT") { behinfo = new BehaviorInfo; behinfo->initAmbientBehavior(subvar, sc); _behaviors.push_back(behinfo); } else { - StaticANIObject *ani = sc->getStaticANIObject1ByName(subvar->_varName, -1); + StaticANIObject *ani = sc->getStaticANIObject1ByName((char *)subvar->_varName.c_str(), -1); if (ani) { for (uint i = 0; i < sc->_staticANIObjectList1.size(); i++) { if (((StaticANIObject *)sc->_staticANIObjectList1[i])->_id == ani->_id) { @@ -279,7 +279,7 @@ void BehaviorInfo::initObjectBehavior(GameVar *var, Scene *sc, StaticANIObject * if (strcmp(var->_value.stringValue, "ROOT")) break; - GameVar *v1 = g_fp->getGameLoaderGameVar()->getSubVarByName("BEHAVIOR")->getSubVarByName(ani->getName()); + GameVar *v1 = g_fp->getGameLoaderGameVar()->getSubVarByName("BEHAVIOR")->getSubVarByName(ani->getName().c_str()); if (v1 == var) return; @@ -317,7 +317,7 @@ BehaviorAnim::BehaviorAnim(GameVar *var, Scene *sc, StaticANIObject *ani, int *m _flags = 0; _behaviorMoves = 0; - Statics *st = ani->getStaticsByName(var->_varName); + Statics *st = ani->getStaticsByName((char *)var->_varName.c_str()); if (st) _staticsId = st->_staticsId; @@ -346,7 +346,7 @@ BehaviorMove::BehaviorMove(GameVar *subvar, Scene *sc, int *delay) { _delay = 0; _percent = 0; _flags = 0; - _messageQueue = sc->getMessageQueueByName(subvar->_varName); + _messageQueue = sc->getMessageQueueByName((char *)subvar->_varName.c_str()); GameVar *vart = subvar->getSubVarByName("dwDelay"); if (vart) diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp index 619f41d6da..6fd720a52d 100644 --- a/engines/fullpipe/gfx.cpp +++ b/engines/fullpipe/gfx.cpp @@ -41,7 +41,6 @@ Background::Background() { _bigPictureArray1Count = 0; _bigPictureArray2Count = 0; _bigPictureArray = 0; - _bgname = 0; _palette = 0; } @@ -260,7 +259,6 @@ GameObject::GameObject() { _priority = 0; _field_20 = 0; _field_8 = 0; - _objectName = 0; } GameObject::GameObject(GameObject *src) { @@ -268,8 +266,7 @@ GameObject::GameObject(GameObject *src) { _flags = 0; _id = src->_id; - _objectName = (char *)calloc(strlen(src->_objectName) + 1, 1); - strncpy(_objectName, src->_objectName, strlen(src->_objectName)); + _objectName = src->_objectName; _ox = src->_ox; _oy = src->_oy; @@ -279,7 +276,6 @@ GameObject::GameObject(GameObject *src) { } GameObject::~GameObject() { - free(_objectName); } bool GameObject::load(MfcArchive &file) { diff --git a/engines/fullpipe/gfx.h b/engines/fullpipe/gfx.h index 43c23b49bc..6c0bf70f44 100644 --- a/engines/fullpipe/gfx.h +++ b/engines/fullpipe/gfx.h @@ -133,7 +133,7 @@ class GameObject : public CObject { int _field_8; int16 _flags; int16 _id; - char *_objectName; + Common::String _objectName; int _ox; int _oy; int _priority; @@ -150,7 +150,7 @@ class GameObject : public CObject { void renumPictures(Common::Array *lst); void setFlags(int16 flags) { _flags = flags; } void clearFlags() { _flags = 0; } - const char *getName() { return _objectName; } + Common::String getName() { return _objectName; } bool getPicAniInfo(PicAniInfo *info); bool setPicAniInfo(PicAniInfo *info); @@ -186,7 +186,7 @@ class Background : public CObject { public: Common::Array _picObjList; - char *_bgname; + Common::String _bgname; int _x; int _y; int16 _messageQueueId; diff --git a/engines/fullpipe/interaction.cpp b/engines/fullpipe/interaction.cpp index 84b8fbc3c5..856552a8b1 100644 --- a/engines/fullpipe/interaction.cpp +++ b/engines/fullpipe/interaction.cpp @@ -428,7 +428,6 @@ Interaction::Interaction() { _staticsId2 = 0; _field_28 = 0; _sceneId = -1; - _actionName = 0; } Interaction::~Interaction() { @@ -438,8 +437,6 @@ Interaction::~Interaction() { } delete _messageQueue; - - free(_actionName); } bool Interaction::load(MfcArchive &file) { @@ -496,20 +493,20 @@ bool Interaction::canInteract(GameObject *obj1, GameObject *obj2, int invId) { if (_objectState1) { if (_flags & 0x10) { - if ((g_fp->getObjectState(obj1->getName()) & _objectState1) == 0) + if ((g_fp->getObjectState(obj1->getName().c_str()) & _objectState1) == 0) return false; } else { - if (g_fp->getObjectState(obj1->getName()) != _objectState1) + if (g_fp->getObjectState(obj1->getName().c_str()) != _objectState1) return false; } } if (_objectState2) { if (_flags & 0x10) { - if ((g_fp->getObjectState(obj2->getName()) & _objectState2) == 0) + if ((g_fp->getObjectState(obj2->getName().c_str()) & _objectState2) == 0) return false; } else { - if (g_fp->getObjectState(obj2->getName()) != _objectState2) + if (g_fp->getObjectState(obj2->getName().c_str()) != _objectState2) return false; } } diff --git a/engines/fullpipe/interaction.h b/engines/fullpipe/interaction.h index 40df9035e9..89af8d7a8f 100644 --- a/engines/fullpipe/interaction.h +++ b/engines/fullpipe/interaction.h @@ -50,7 +50,7 @@ class Interaction : public CObject { int _sceneId; int _field_28; uint _flags; - char *_actionName; + Common::String _actionName; public: Interaction(); diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 05f13d4a8b..47d0591daa 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -54,7 +54,7 @@ void MotionController::enableLinks(const char *linkName, bool enable) { MovGraphLink *lnk = (MovGraphLink *)*l; - if (!strcmp(lnk->_name, linkName)) { + if (lnk->_name == linkName) { if (enable) lnk->_flags |= 0x20000000; else @@ -82,7 +82,7 @@ MovGraphLink *MotionController::getLinkByName(const char *name) { MovGraphLink *lnk = (MovGraphLink *)*l; - if (!strcmp(lnk->_name, name)) + if (lnk->_name == name) return lnk; } } @@ -97,7 +97,7 @@ MovGraphLink *MotionController::getLinkByName(const char *name) { MovGraphLink *lnk = (MovGraphLink *)*l; - if (!strcmp(lnk->_name, name)) + if (lnk->_name == name) return lnk; } } @@ -391,7 +391,7 @@ int MctlLadder::findObjectPos(StaticANIObject *obj) { bool MctlLadder::initMovement(StaticANIObject *ani, MctlLadderMovement *movement) { debugC(4, kDebugPathfinding, "MctlLadder::initMovement(*%d, ...)", ani->_id); - GameVar *v = g_fp->getGameLoaderGameVar()->getSubVarByName(ani->getName()); + GameVar *v = g_fp->getGameLoaderGameVar()->getSubVarByName(ani->getName().c_str()); if (!v) return false; @@ -1744,7 +1744,7 @@ bool MctlGraph::fillData(StaticANIObject *obj, MctlAni *item) { item->_obj = obj; item->_objectId = obj->_id; - GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName(obj->_objectName); + GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName(obj->_objectName.c_str()); if (!var) return false; @@ -2900,7 +2900,6 @@ MovGraphLink::MovGraphLink() { _field_3C = 0; _field_38 = 0; _movGraphReact = 0; - _name = 0; _objtype = kObjTypeMovGraphLink; } diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index 4eecd98536..7c25080485 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -228,7 +228,7 @@ class MovGraphLink : public CObject { double _length; double _angle; MovGraphReact *_movGraphReact; - char *_name; + Common::String _name; public: MovGraphLink(); diff --git a/engines/fullpipe/objects.h b/engines/fullpipe/objects.h index 12ad6105d3..57f7864f1b 100644 --- a/engines/fullpipe/objects.h +++ b/engines/fullpipe/objects.h @@ -33,7 +33,7 @@ class SceneTagList; class GameProject : public CObject { public: int _field_4; - char *_headerFilename; + Common::String _headerFilename; SceneTagList *_sceneTagList; int _field_10; @@ -80,7 +80,7 @@ class GameVar : public CObject { GameVar *_parentVarObj; GameVar *_subVars; GameVar *_field_14; - char *_varName; + Common::String _varName; VarValue _value; int _varType; diff --git a/engines/fullpipe/scene.cpp b/engines/fullpipe/scene.cpp index f7a9458403..a4086734b2 100644 --- a/engines/fullpipe/scene.cpp +++ b/engines/fullpipe/scene.cpp @@ -72,7 +72,6 @@ bool SceneTagList::load(MfcArchive &file) { SceneTag::SceneTag() { _field_4 = 0; _scene = 0; - _tag = 0; _sceneId = 0; } @@ -86,14 +85,12 @@ bool SceneTag::load(MfcArchive &file) { _tag = file.readPascalString(); - debugC(6, kDebugLoading, "sceneId: %d tag: %s", _sceneId, _tag); + debugC(6, kDebugLoading, "sceneId: %d tag: %s", _sceneId, _tag.c_str()); return true; } SceneTag::~SceneTag() { - free(_tag); - delete _scene; delete _field_4; } @@ -130,7 +127,6 @@ Scene::Scene() { _shadows = 0; _soundList = 0; _libHandle = 0; - _sceneName = 0; } Scene::~Scene() { @@ -153,8 +149,6 @@ Scene::~Scene() { delete _libHandle; // delete _field_BC; - - free(_sceneName); } bool Scene::load(MfcArchive &file) { @@ -221,10 +215,10 @@ bool Scene::load(MfcArchive &file) { _libHandle = g_fp->_currArchive; - if (_picObjList.size() > 0 && _bgname && strlen(_bgname) > 1) { + if (_picObjList.size() > 0 && _bgname.size() > 1) { char fname[260]; - strcpy(fname, _bgname); + strcpy(fname, _bgname.c_str()); strcpy(strrchr(fname, '.') + 1, "col"); MemoryObject *col = new MemoryObject(); @@ -312,7 +306,7 @@ StaticANIObject *Scene::getStaticANIObject1ById(int obj, int a3) { StaticANIObject *Scene::getStaticANIObject1ByName(char *name, int a3) { for (uint i = 0; i < _staticANIObjectList1.size(); i++) { - if (!strcmp(_staticANIObjectList1[i]->_objectName, name) && (a3 == -1 || _staticANIObjectList1[i]->_odelay == a3)) + if (_staticANIObjectList1[i]->_objectName == name && (a3 == -1 || _staticANIObjectList1[i]->_odelay == a3)) return _staticANIObjectList1[i]; } @@ -373,7 +367,7 @@ PictureObject *Scene::getPictureObjectById(int objId, int flags) { PictureObject *Scene::getPictureObjectByName(const char *objName, int flags) { for (uint i = 0; i < _picObjList.size(); i++) { - if (!strcmp(((PictureObject *)_picObjList[i])->_objectName, objName) && (((PictureObject *)_picObjList[i])->_odelay == flags || flags == -1)) + if (((PictureObject *)_picObjList[i])->_objectName == objName && (((PictureObject *)_picObjList[i])->_odelay == flags || flags == -1)) return (PictureObject *)_picObjList[i]; } @@ -413,14 +407,14 @@ void Scene::preloadMovements(GameVar *var) { return; for (GameVar *i = preload->_subVars; i; i = i->_nextVarObj) { - StaticANIObject *ani = getStaticANIObject1ByName(i->_varName, -1); + StaticANIObject *ani = getStaticANIObject1ByName((char *)i->_varName.c_str(), -1); if (ani) { GameVar *subVars = i->_subVars; if (subVars) { for (;subVars; subVars = subVars->_nextVarObj) { - Movement *mov = ani->getMovementByName(subVars->_varName); + Movement *mov = ani->getMovementByName((char *)subVars->_varName.c_str()); if (mov) mov->loadPixelData(); @@ -442,9 +436,9 @@ void Scene::initObjectCursors(const char *varname) { int minId = 0xffff; for (GameVar *sub = cursorsVar->_subVars; sub; sub = sub->_nextVarObj) { - GameObject *obj = getPictureObjectByName(sub->_varName, -1); + GameObject *obj = getPictureObjectByName((char *)sub->_varName.c_str(), -1); - if (obj || (obj = getStaticANIObject1ByName(sub->_varName, -1)) != 0) { + if (obj || (obj = getStaticANIObject1ByName((char *)sub->_varName.c_str(), -1)) != 0) { if (obj->_id < minId) minId = obj->_id; if (obj->_id > maxId) @@ -458,10 +452,10 @@ void Scene::initObjectCursors(const char *varname) { g_fp->_objectIdCursors.resize(maxId - minId + 1); for (GameVar *sub = cursorsVar->_subVars; sub; sub = sub->_nextVarObj) { - GameObject *obj = getPictureObjectByName(sub->_varName, -1); + GameObject *obj = getPictureObjectByName((char *)sub->_varName.c_str(), -1); if (!obj) - obj = getStaticANIObject1ByName(sub->_varName, -1); + obj = getStaticANIObject1ByName((char *)sub->_varName.c_str(), -1); PictureObject *pic = getGameLoaderInventory()->getScene()->getPictureObjectByName(sub->_value.stringValue, -1); diff --git a/engines/fullpipe/scene.h b/engines/fullpipe/scene.h index 55f07fbaac..324c8b9a2a 100644 --- a/engines/fullpipe/scene.h +++ b/engines/fullpipe/scene.h @@ -38,7 +38,7 @@ class Scene : public Background { Shadows *_shadows; SoundList *_soundList; int16 _sceneId; - char *_sceneName; + Common::String _sceneName; int _field_BC; NGIArchive *_libHandle; @@ -94,7 +94,7 @@ class Scene : public Background { class SceneTag : public CObject { public: CObject *_field_4; - char *_tag; + Common::String _tag; Scene *_scene; int16 _sceneId; diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp index 1a88e47134..187ed16fec 100644 --- a/engines/fullpipe/sound.cpp +++ b/engines/fullpipe/sound.cpp @@ -273,7 +273,7 @@ void FullpipeEngine::setSceneMusicParameters(GameVar *gvar) { while (sub) { if (_musicAllowed & sub->_value.intValue) { - Common::strlcpy(_sceneTracks[_numSceneTracks], sub->_varName, 260); + Common::strlcpy(_sceneTracks[_numSceneTracks], sub->_varName.c_str(), 260); _numSceneTracks++; } @@ -445,7 +445,7 @@ void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed while (sub) { if (_musicAllowed & sub->_value.intValue) { - Common::strlcpy(_sceneTracks[_numSceneTracks], sub->_varName, 260); + Common::strlcpy(_sceneTracks[_numSceneTracks], sub->_varName.c_str(), 260); _numSceneTracks++; } diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp index fa663b27bc..54d6fbbf3f 100644 --- a/engines/fullpipe/stateloader.cpp +++ b/engines/fullpipe/stateloader.cpp @@ -256,11 +256,10 @@ void GameLoader::addVar(GameVar *var, GameVar *subvar) { subvar->_value.intValue = var->_value.intValue; for (GameVar *v = var->_subVars; v; v = v->_nextVarObj) { - GameVar *nv = subvar->getSubVarByName(v->_varName); + GameVar *nv = subvar->getSubVarByName(v->_varName.c_str()); if (!nv) { nv = new GameVar; - nv->_varName = (char *)calloc(strlen(v->_varName) + 1, 1); - strcpy(nv->_varName, v->_varName); + nv->_varName = v->_varName; nv->_varType = v->_varType; subvar->addSubVar(nv); @@ -361,7 +360,6 @@ bool FullpipeEngine::loadGam(const char *fname, int scene) { GameProject::GameProject() { _field_4 = 0; - _headerFilename = 0; _field_10 = 12; _sceneTagList = 0; @@ -371,7 +369,6 @@ bool GameProject::load(MfcArchive &file) { debugC(5, kDebugLoading, "GameProject::load()"); _field_4 = 0; - _headerFilename = 0; _field_10 = 12; g_fp->_gameProjectVersion = file.readUint32LE(); @@ -383,7 +380,7 @@ bool GameProject::load(MfcArchive &file) { debugC(1, kDebugLoading, "_gameProjectVersion = %d", g_fp->_gameProjectVersion); debugC(1, kDebugLoading, "_pictureScale = %d", g_fp->_pictureScale); debugC(1, kDebugLoading, "_scrollSpeed = %d", g_fp->_scrollSpeed); - debugC(1, kDebugLoading, "_headerFilename = %s", _headerFilename); + debugC(1, kDebugLoading, "_headerFilename = %s", _headerFilename.c_str()); _sceneTagList = new SceneTagList(); @@ -401,8 +398,6 @@ bool GameProject::load(MfcArchive &file) { } GameProject::~GameProject() { - free(_headerFilename); - delete _sceneTagList; } @@ -414,7 +409,6 @@ GameVar::GameVar() { _field_14 = 0; _varType = 0; _value.floatValue = 0; - _varName = 0; _objtype = kObjTypeGameVar; } @@ -455,8 +449,6 @@ GameVar::~GameVar() { delete s; s = _field_14; } - - free(_varName); } bool GameVar::load(MfcArchive &file) { @@ -478,9 +470,12 @@ bool GameVar::load(MfcArchive &file) { _value.intValue = file.readUint32LE(); // FIXME debugC(6, kDebugLoading, "f --> %f", _value.floatValue); break; - case 2: - _value.stringValue = file.readPascalString(); + case 2: { + Common::String str = file.readPascalString(); + _value.stringValue = (char *)calloc(str.size() + 1, 1); + Common::strlcpy(_value.stringValue, str.c_str(), str.size() + 1); debugC(6, kDebugLoading, "s --> %s", _value.stringValue); + } break; default: error("Unknown var type: %d (0x%x)", _varType, _varType); @@ -502,7 +497,7 @@ GameVar *GameVar::getSubVarByName(const char *name) { if (_subVars != 0) { sv = _subVars; - for (;sv && scumm_stricmp(sv->_varName, name); sv = sv->_nextVarObj) + for (;sv && scumm_stricmp(sv->_varName.c_str(), name); sv = sv->_nextVarObj) ; } return sv; @@ -523,8 +518,7 @@ bool GameVar::setSubVarAsInt(const char *name, int value) { var = new GameVar(); var->_varType = 0; var->_value.intValue = value; - var->_varName = (char *)calloc(strlen(name) + 1, 1); - strcpy(var->_varName, name); + var->_varName = name; return addSubVar(var); } @@ -547,8 +541,7 @@ GameVar *GameVar::addSubVarAsInt(const char *name, int value) { var->_varType = 0; var->_value.intValue = value; - var->_varName = (char *)calloc(strlen(name) + 1, 1); - strcpy(var->_varName, name); + var->_varName = name; return (addSubVar(var) != 0) ? var : 0; } diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp index 5dee183aff..5c83114e10 100644 --- a/engines/fullpipe/statics.cpp +++ b/engines/fullpipe/statics.cpp @@ -452,7 +452,7 @@ int StaticANIObject::getMovementIdById(int itemId) { Movement *StaticANIObject::getMovementByName(char *name) { for (uint i = 0; i < _movements.size(); i++) - if (!strcmp(_movements[i]->_objectName, name)) + if (_movements[i]->_objectName == name) return _movements[i]; return 0; @@ -681,7 +681,7 @@ void StaticANIObject::draw2() { } MovTable *StaticANIObject::countMovements() { - GameVar *preloadSubVar = g_fp->getGameLoaderGameVar()->getSubVarByName(getName())->getSubVarByName("PRELOAD"); + GameVar *preloadSubVar = g_fp->getGameLoaderGameVar()->getSubVarByName(getName().c_str())->getSubVarByName("PRELOAD"); if (!preloadSubVar || preloadSubVar->getSubVarsCount() == 0) return 0; @@ -695,7 +695,7 @@ MovTable *StaticANIObject::countMovements() { movTable->movs[i] = 2; for (GameVar *sub = preloadSubVar->_subVars; sub; sub = sub->_nextVarObj) { - if (scumm_stricmp(_movements[i]->getName(), sub->_varName) == 0) { + if (scumm_stricmp(_movements[i]->getName().c_str(), sub->_varName.c_str()) == 0) { movTable->movs[i] = 1; break; } @@ -706,7 +706,7 @@ MovTable *StaticANIObject::countMovements() { } void StaticANIObject::setSpeed(int speed) { - GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName(getName())->getSubVarByName("SpeedUp"); + GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName(getName().c_str())->getSubVarByName("SpeedUp"); if (!var) return; diff --git a/engines/fullpipe/utils.cpp b/engines/fullpipe/utils.cpp index d06354cb91..689491d11d 100644 --- a/engines/fullpipe/utils.cpp +++ b/engines/fullpipe/utils.cpp @@ -92,9 +92,10 @@ bool DWordArray::load(MfcArchive &file) { return true; } -char *MfcArchive::readPascalString(bool twoByte) { +Common::String MfcArchive::readPascalString(bool twoByte) { char *tmp; int len; + Common::String result; if (twoByte) len = readUint16LE(); @@ -103,21 +104,23 @@ char *MfcArchive::readPascalString(bool twoByte) { tmp = (char *)calloc(len + 1, 1); read(tmp, len); + result = tmp; + free(tmp); - debugC(9, kDebugLoading, "readPascalString: %d <%s>", len, transCyrillic(tmp)); + debugC(9, kDebugLoading, "readPascalString: %d <%s>", len, transCyrillic(result)); - return tmp; + return result; } -void MfcArchive::writePascalString(const char *str, bool twoByte) { - int len = strlen(str); +void MfcArchive::writePascalString(Common::String str, bool twoByte) { + int len = str.size(); if (twoByte) writeUint16LE(len); else writeByte(len); - write(str, len); + write(str.c_str(), len); } MemoryObject::MemoryObject() { @@ -388,7 +391,7 @@ CObject *MfcArchive::readClass() { } CObject *MfcArchive::parseClass(bool *isCopyReturned) { - char *name; + Common::String name; int objectId = 0; CObject *res = 0; @@ -404,13 +407,13 @@ CObject *MfcArchive::parseClass(bool *isCopyReturned) { debugC(7, kDebugLoading, "parseClass::schema = %d", schema); name = readPascalString(true); - debugC(7, kDebugLoading, "parseClass::class <%s>", name); + debugC(7, kDebugLoading, "parseClass::class <%s>", name.c_str()); - if (!_classMap.contains(name)) { - error("Unknown class in MfcArchive: <%s>", name); + if (!_classMap.contains(name.c_str())) { + error("Unknown class in MfcArchive: <%s>", name.c_str()); } - objectId = _classMap[name]; + objectId = _classMap[name.c_str()]; debugC(7, kDebugLoading, "tag: %d 0x%x (%x)", _objectMap.size() - 1, _objectMap.size() - 1, objectId); diff --git a/engines/fullpipe/utils.h b/engines/fullpipe/utils.h index 9630df6153..101fe20e1b 100644 --- a/engines/fullpipe/utils.h +++ b/engines/fullpipe/utils.h @@ -67,8 +67,8 @@ public: MfcArchive(Common::SeekableReadStream *file); MfcArchive(Common::WriteStream *file); - char *readPascalString(bool twoByte = false); - void writePascalString(const char *str, bool twoByte = false); + Common::String readPascalString(bool twoByte = false); + void writePascalString(Common::String str, bool twoByte = false); int readCount(); double readDouble(); CObject *parseClass(bool *isCopyReturned); -- cgit v1.2.3