aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/engine/kernel32.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel32.cpp b/engines/sci/engine/kernel32.cpp
index b866c2dada..6a112af0a3 100644
--- a/engines/sci/engine/kernel32.cpp
+++ b/engines/sci/engine/kernel32.cpp
@@ -617,7 +617,14 @@ reg_t kString(EngineState *s, int argc, reg_t *argv) {
warning("kString(Printf)");
break;
case 12: // Printf Buf
- return kFormat(s, argc - 1, argv + 1);
+ if (argc == 3)
+ return kFormat(s, argc - 1, argv + 1);
+ else
+ // TODO
+ // For some reason, argc > 3 crashes, e.g. in Torin full (there's a format
+ // string %s%s, but the string passed for the first %s is invalid). Perhaps
+ // a list is passed in this case?
+ warning("kString(PrintBuf) - parameter count %d not supported", argc);
break;
case 13: { // atoi
Common::String string = s->_segMan->getString(argv[1]);