aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--script_v1.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/script_v1.cpp b/script_v1.cpp
index c993667884..670a5e33af 100644
--- a/script_v1.cpp
+++ b/script_v1.cpp
@@ -1946,6 +1946,7 @@ void Scumm::o5_setObjectName() {
int a;
int i;
byte *name;
+ unsigned char work[255];
if (obj < NUM_ACTORS)
error("Can't set actor %d name with new-name-of", obj);
@@ -1958,19 +1959,25 @@ void Scumm::o5_setObjectName() {
i = 0;
while ((a = fetchScriptByte()) != 0) {
- name[i++] = a;
+ work[i++] = a;
if (a==0xFF) {
- name[i++] = fetchScriptByte();
- name[i++] = fetchScriptByte();
- name[i++] = fetchScriptByte();
+ work[i++] = fetchScriptByte();
+ work[i++] = fetchScriptByte();
+ work[i++] = fetchScriptByte();
}
- if (i >= size)
- error("New name of object %d too long", obj);
}
- name[i] = 0;
+ if (i >= size) {
+ work[i] = 0;
+ warning("New name of object %d too long (old *%s* new *%s*)",
+ obj, name, work);
+ i = size - 1;
+ }
+
+ work[i] = 0;
+ strcpy((char*)name, (char*)work);
runHook(0);
}