From 410ba11f8c8a24ef483eafb3bcb638223e1ef44b Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 17 Dec 2009 12:21:05 +0000 Subject: [PATCH] read_port_etc(): * Also check whether the port is closed after waiting. * Don't increment read_count after waiting failed. That should have been the cause of #5119. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34687 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/port.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/system/kernel/port.cpp b/src/system/kernel/port.cpp index d3fe1ea13c..10a8dfe352 100644 --- a/src/system/kernel/port.cpp +++ b/src/system/kernel/port.cpp @@ -1175,7 +1175,8 @@ read_port_etc(port_id id, int32* _code, void* buffer, size_t bufferSize, locker.Lock(); - if (sPorts[slot].id != id) { + if (sPorts[slot].id != id + || (is_port_closed(slot) && sPorts[slot].messages.IsEmpty())) { // the port is no longer there T(Read(sPorts[slot], 0, B_BAD_PORT_ID)); return B_BAD_PORT_ID; @@ -1183,7 +1184,6 @@ read_port_etc(port_id id, int32* _code, void* buffer, size_t bufferSize, if (status != B_OK) { T(Read(sPorts[slot], 0, status)); - sPorts[slot].read_count++; return status; } }