From 8a5dadcf53e878fd96365479c5883f31e1716366 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 18 Aug 2013 09:52:15 -0700 Subject: [PATCH] Start out with 0 written msgpipe bytes. --- Core/HLE/sceKernelMsgPipe.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Core/HLE/sceKernelMsgPipe.cpp b/Core/HLE/sceKernelMsgPipe.cpp index d1ba55f9ee..1e835d8877 100644 --- a/Core/HLE/sceKernelMsgPipe.cpp +++ b/Core/HLE/sceKernelMsgPipe.cpp @@ -84,7 +84,7 @@ struct MsgPipeWaitingThread if (IsStillWaiting(waitID)) { WriteCurrentTimeout(waitID); - if (transferred != (u32)-1) + if (transferred != (u32)-1 && transferredBytes.IsValid()) *transferredBytes = transferred; __KernelResumeThreadFromWait(id, result); } @@ -114,6 +114,10 @@ struct MsgPipe : public KernelObject void AddWaitingThread(std::vector &list, SceUID id, u32 addr, u32 size, int waitMode, u32 transferredBytesAddr, bool usePrio) { MsgPipeWaitingThread thread = { id, addr, size, size, waitMode, transferredBytesAddr }; + // Start out with 0 transferred bytes while waiting. + if (thread.transferredBytes.IsValid()) + *thread.transferredBytes = 0; + if (usePrio) { for (std::vector::iterator it = list.begin(); it != list.end(); it++)