You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@etch.apache.org by ve...@apache.org on 2011/10/18 14:35:59 UTC
svn commit: r1185624 - in
/incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu:
include/capu/os/arch/Linux/Thread.inc test/os/ThreadTest.cpp
Author: veithm
Date: Tue Oct 18 12:35:59 2011
New Revision: 1185624
URL: http://svn.apache.org/viewvc?rev=1185624&view=rev
Log:
ETCH-140 EtchThread Fix
Fixed join implementation which caused Segmentation Fault on some linux
versions
Modified:
incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/os/arch/Linux/Thread.inc
incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/os/ThreadTest.cpp
Modified: incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/os/arch/Linux/Thread.inc
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/os/arch/Linux/Thread.inc?rev=1185624&r1=1185623&r2=1185624&view=diff
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/os/arch/Linux/Thread.inc (original)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/os/arch/Linux/Thread.inc Tue Oct 18 12:35:59 2011
@@ -73,7 +73,11 @@ inline Thread::~Thread()
inline status_t Thread::join ()
{
+ if (mThread == 0) {
+ return CAPU_ERROR;
+ }
if(pthread_join(mThread,NULL) == 0) {
+ mThread = 0;
return CAPU_OK;
}
else {
Modified: incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/os/ThreadTest.cpp
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/os/ThreadTest.cpp?rev=1185624&r1=1185623&r2=1185624&view=diff
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/os/ThreadTest.cpp (original)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/os/ThreadTest.cpp Tue Oct 18 12:35:59 2011
@@ -37,11 +37,28 @@ class ThreadTest
variable = *val;
}
};
+
+class ThreadTest2
+{
+ public:
+
+ ThreadTest2()
+ {
+ }
+
+ inline void operator()(void * param)
+ {
+ return;
+ }
+};
+
+
capu::int32_t ThreadTest::variable;
TEST(Thread,startAndJoinTest)
{
ThreadTest _test;
+ ThreadTest2 _test2;
capu::int32_t newval = 6;
//CREATE THREAD
capu::Thread * CAPU_thread = new capu::Thread(&_test,(void *)&newval);
@@ -50,8 +67,23 @@ TEST(Thread,startAndJoinTest)
//CHECK THE VALUE CALCULATED IN THREAD
EXPECT_TRUE(ThreadTest::variable == newval);
delete CAPU_thread;
+ capu::Thread * CAPU_thread2 = new capu::Thread(&_test2,NULL);
+ EXPECT_TRUE(CAPU_thread2->join()==capu::CAPU_OK);
+ delete CAPU_thread2;
+}
+
+TEST(Thread,startAndDestructorTest)
+{
+ ThreadTest _test;
+ capu::int32_t newval = 6;
+
+ capu::Thread * CAPU_thread = new capu::Thread(&_test,(void *)&newval);
+ delete CAPU_thread;
+
+ EXPECT_TRUE(ThreadTest::variable == newval);
}
+
TEST(Thread,sleepTest)
{
capu::int32_t newval=5;
@@ -72,4 +104,4 @@ TEST(Thread,contextTest)
capu::Thread thread(&_test,(void*)&newval);
}
EXPECT_TRUE(ThreadTest::variable == newval);
-}
\ No newline at end of file
+}