From afc24a54e2c45f239d705b5ed85123eaa4f37136 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Tue, 21 May 2013 00:57:33 -0700 Subject: [PATCH] Ignore start module params that are 0. Pretty sure this is why "bogus priority 0" is being logged. --- Core/HLE/sceKernelModule.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Core/HLE/sceKernelModule.cpp b/Core/HLE/sceKernelModule.cpp index f9278b1a00..288b80b213 100644 --- a/Core/HLE/sceKernelModule.cpp +++ b/Core/HLE/sceKernelModule.cpp @@ -878,9 +878,13 @@ void sceKernelStartModule(u32 moduleId, u32 argsize, u32 argAddr, u32 returnValu if (optionAddr) { SceKernelSMOption smoption; Memory::ReadStruct(optionAddr, &smoption);; - priority = smoption.priority; + if (smoption.priority != 0) { + priority = smoption.priority; + } attr = smoption.attribute; - stacksize = smoption.stacksize; + if (smoption.stacksize != 0) { + stacksize = smoption.stacksize; + } stackPartition = smoption.mpidstack; } u32 error; @@ -900,9 +904,13 @@ void sceKernelStartModule(u32 moduleId, u32 argsize, u32 argAddr, u32 returnValu // TODO: Do these always take effect, or do they not override optionAddr? if (module->nm.module_start_func != 0 && module->nm.module_start_func != (u32)-1) { entryAddr = module->nm.module_start_func; - priority = module->nm.module_start_thread_priority; + if (module->nm.module_start_thread_priority != 0) { + priority = module->nm.module_start_thread_priority; + } attr = module->nm.module_start_thread_attr; - stacksize = module->nm.module_start_thread_stacksize; + if (module->nm.module_start_thread_stacksize != 0) { + stacksize = module->nm.module_start_thread_stacksize; + } } else { // TODO: Fix, check return value? Or do we call nothing? RETURN(moduleId);