aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/engine/game.cpp4
-rw-r--r--engines/sci/engine/seg_manager.cpp1
2 files changed, 2 insertions, 3 deletions
diff --git a/engines/sci/engine/game.cpp b/engines/sci/engine/game.cpp
index 7fd940fd68..6f2cf4b008 100644
--- a/engines/sci/engine/game.cpp
+++ b/engines/sci/engine/game.cpp
@@ -525,8 +525,8 @@ void script_set_gamestate_save_dir(EngineState *s, const char *path) {
SystemString *str = &s->sys_strings->strings[SYS_STRING_SAVEDIR];
strncpy((char *)str->value, path, str->max_size);
- str->value[str->max_size].segment = s->string_frag_segment; // Make sure to terminate
- str->value[str->max_size].offset &= 0xff00; // Make sure to terminate
+ str->value[str->max_size - 1].segment = s->string_frag_segment; // Make sure to terminate
+ str->value[str->max_size - 1].offset &= 0xff00; // Make sure to terminate
}
void internal_stringfrag_strncpy(EngineState *s, reg_t *dest, reg_t *src, int len);
diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp
index 81de171cb2..35297cb077 100644
--- a/engines/sci/engine/seg_manager.cpp
+++ b/engines/sci/engine/seg_manager.cpp
@@ -264,7 +264,6 @@ int SegManager::deallocate(int seg, bool recursive) {
free(str->name);
str->name = NULL;
- // FIXME: this corrupts the heap for some reason
free(str->value);
str->value = NULL;