diff options
Diffstat (limited to 'engines/sci/engine/kernel.cpp')
-rw-r--r-- | engines/sci/engine/kernel.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 7b6a9a7660..31d5dc722c 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -141,8 +141,8 @@ SciKernelFunction kfunct_mappers[] = { /*47*/ DEFUN("StrEnd", kStrEnd, "r"), /*48*/ DEFUN("StrCat", kStrCat, "rr"), /*49*/ DEFUN("StrCmp", kStrCmp, "rri*"), - /*4a*/ DEFUN("StrLen", kStrLen, "r"), - /*4b*/ DEFUN("StrCpy", kStrCpy, "rri*"), + /*4a*/ DEFUN("StrLen", kStrLen, "Zr"), + /*4b*/ DEFUN("StrCpy", kStrCpy, "rZri*"), /*4c*/ DEFUN("Format", kFormat, "r.*"), /*4d*/ DEFUN("GetFarText", kGetFarText, "iir"), /*4e*/ DEFUN("ReadNumber", kReadNumber, "r"), @@ -923,6 +923,9 @@ static void *_kernel_dereference_pointer(EngineState *s, reg_t pointer, int entr int maxsize; void *retval = s->seg_manager->dereference(pointer, &maxsize); + if (!retval) + return NULL; + if (pointer.offset & (align - 1)) { warning("Unaligned pointer read: %04x:%04x expected with %d alignment", PRINT_REG(pointer), align); return NULL; |