2007-08-10 Gert Driesen <drieseng@users.sourceforge.net>
authorDick Porter <dick@acm.org>
Fri, 10 Aug 2007 10:18:07 +0000 (10:18 -0000)
committerDick Porter <dick@acm.org>
Fri, 10 Aug 2007 10:18:07 +0000 (10:18 -0000)
* Thread.cs: Throw ThreadStateException when retrieving ApartmentState
or IsBackground if thread is stopped. Fixes bug #81658.

2007-08-10  Gert Driesen  <drieseng@users.sourceforge.net>

* ThreadTest.cs: Enabled test for bug #81658.

svn path=/trunk/mcs/; revision=83806

mcs/class/corlib/System.Threading/ChangeLog
mcs/class/corlib/System.Threading/Thread.cs
mcs/class/corlib/Test/System.Threading/ChangeLog
mcs/class/corlib/Test/System.Threading/ThreadTest.cs

index 98eb9a48b53d0eb74c58c5831e1ea3bbc2de6579..12843cd98162957c84e70ab44fcc013f91b9df31 100644 (file)
@@ -1,3 +1,8 @@
+2007-08-10  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * Thread.cs: Throw ThreadStateException when retrieving ApartmentState
+       or IsBackground if thread is stopped. Fixes bug #81658.
+
 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
 
        * Thread.cs: Add a fixme.
index 128b5c134352f9d46c0ae31bf9ab076591de22ba..a01722adbcd84d16848e334649558dbbf381cfd0 100644 (file)
@@ -305,6 +305,9 @@ namespace System.Threading {
 #endif
                public ApartmentState ApartmentState {
                        get {
+                               if ((ThreadState & ThreadState.Stopped) != 0)
+                                       throw new ThreadStateException ("Thread is dead; state can not be accessed.");
+
                                return (ApartmentState)apartment_state;
                        }
 
@@ -533,7 +536,11 @@ namespace System.Threading {
 
                public bool IsBackground {
                        get {
-                               return (GetState () & ThreadState.Background) != 0;
+                               ThreadState thread_state = GetState ();
+                               if ((thread_state & ThreadState.Stopped) != 0)
+                                       throw new ThreadStateException ("Thread is dead; state can not be accessed.");
+
+                               return (thread_state & ThreadState.Background) != 0;
                        }
                        
                        set {
index b419152c6a3f4c756c4db8eee24bf0a018e7d9a9..9cf6511328b148f6b9ba58e048705d14128a55b2 100644 (file)
@@ -1,3 +1,7 @@
+2007-08-10  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * ThreadTest.cs: Enabled test for bug #81658.
+
 2007-07-22  Gert Driesen  <drieseng@users.sourceforge.net>
 
        * AutoResetEventTest.cs: Added test for verifying effect of assigning
index d792e30bd803d89fd55b10553734fdce14700c59..d0daa66aa6b3c2bd5beb3fd42910c2100622333d 100644 (file)
@@ -704,7 +704,6 @@ namespace MonoTests.System.Threading
                }
 
                [Test] // bug #81658
-               [Category ("NotWorking")]
                public void ApartmentState_StoppedThread ()
                {
                        Thread t1 = new Thread (new ThreadStart (Start));