aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/kstring.cpp
diff options
context:
space:
mode:
authorAlyssa Milburn2011-07-07 09:24:10 +0200
committerAlyssa Milburn2011-07-07 09:24:10 +0200
commit66e81d633f987310f12038147ae01b8ce4f640f7 (patch)
tree6035a7124789c3e6cdff5f603e9933529b7efdc7 /engines/sci/engine/kstring.cpp
parentaffaa1f4d6cf5f27f654029133b1aec7b9eca4b5 (diff)
parent72da8ef5adf82d8a65da299207f30af5058ca8a9 (diff)
downloadscummvm-rg350-66e81d633f987310f12038147ae01b8ce4f640f7.tar.gz
scummvm-rg350-66e81d633f987310f12038147ae01b8ce4f640f7.tar.bz2
scummvm-rg350-66e81d633f987310f12038147ae01b8ce4f640f7.zip
Merge remote-tracking branch 'origin/master' into soltys_wip2
Diffstat (limited to 'engines/sci/engine/kstring.cpp')
-rw-r--r--engines/sci/engine/kstring.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp
index 9f10691767..7b8db22e3f 100644
--- a/engines/sci/engine/kstring.cpp
+++ b/engines/sci/engine/kstring.cpp
@@ -730,6 +730,10 @@ reg_t kString(EngineState *s, int argc, reg_t *argv) {
case 8: { // Dup
const char *rawString = 0;
uint32 size = 0;
+ reg_t stringHandle;
+ // We allocate the new string first because if the StringTable needs to
+ // grow, our rawString pointer will be invalidated
+ SciString *dupString = s->_segMan->allocateString(&stringHandle);
if (argv[1].segment == s->_segMan->getStringSegmentId()) {
SciString *string = s->_segMan->lookupString(argv[1]);
@@ -741,8 +745,6 @@ reg_t kString(EngineState *s, int argc, reg_t *argv) {
size = string.size() + 1;
}
- reg_t stringHandle;
- SciString *dupString = s->_segMan->allocateString(&stringHandle);
dupString->setSize(size);
for (uint32 i = 0; i < size; i++)