From 89cfd54279e8ce6d5432e60e8ba3d881d40fd3d5 Mon Sep 17 00:00:00 2001 From: Karsten Heimrich Date: Thu, 4 Sep 2008 17:00:01 +0000 Subject: [PATCH] * revert r27322 and apply the patch provided by Salvatore Thanks you! :) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27323 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/thread.cpp | 7 ++++--- src/system/libroot/os/thread.c | 4 ---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/system/kernel/thread.cpp b/src/system/kernel/thread.cpp index 4c274aedea..2187757e42 100644 --- a/src/system/kernel/thread.cpp +++ b/src/system/kernel/thread.cpp @@ -2855,15 +2855,16 @@ _user_receive_data(thread_id *_userSender, void *buffer, size_t bufferSize) thread_id sender; status_t code; - if (!IS_USER_ADDRESS(_userSender) + if ((!IS_USER_ADDRESS(_userSender) && _userSender != NULL) || !IS_USER_ADDRESS(buffer)) return B_BAD_ADDRESS; code = receive_data_etc(&sender, buffer, bufferSize, B_KILL_CAN_INTERRUPT); // supports userland buffers - if (user_memcpy(_userSender, &sender, sizeof(thread_id)) < B_OK) - return B_BAD_ADDRESS; + if (_userSender != NULL) + if (user_memcpy(_userSender, &sender, sizeof(thread_id)) < B_OK) + return B_BAD_ADDRESS; return code; } diff --git a/src/system/libroot/os/thread.c b/src/system/libroot/os/thread.c index 45a9c2e205..51ce429155 100644 --- a/src/system/libroot/os/thread.c +++ b/src/system/libroot/os/thread.c @@ -179,10 +179,6 @@ send_data(thread_id thread, int32 code, const void *buffer, size_t bufferSize) int32 receive_data(thread_id *_sender, void *buffer, size_t bufferSize) { - if (_sender == NULL) { - thread_id id; - return _kern_receive_data(&id, buffer, bufferSize); - } return _kern_receive_data(_sender, buffer, bufferSize); }