2010-02-26 Robert Jordan <robertj@gmx.net>
authorRobert Jordan <robertj@gmx.net>
Fri, 26 Feb 2010 17:59:22 +0000 (17:59 -0000)
committerRobert Jordan <robertj@gmx.net>
Fri, 26 Feb 2010 17:59:22 +0000 (17:59 -0000)
* tasklets.c (continuation_store): Return from an error condition
immediately.

svn path=/trunk/mono/; revision=152562

mono/mini/ChangeLog
mono/mini/tasklets.c

index 7f956248d90eecacb52b7deb5bdbbb20617552aa..1bb0b4c6ce788f61aa2b92c913d9868d22464351 100755 (executable)
@@ -1,3 +1,8 @@
+2010-02-26  Robert Jordan  <robertj@gmx.net>
+
+       * tasklets.c (continuation_store): Return from an error condition
+       immediately.
+
 2010-02-26  Martin Baulig  <martin@ximian.com>
 
        * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
index 22dd281000c090582d8500061514ebf788dc36b8..73d71fe074a8f9db5793922f31147d2369dc96dc 100644 (file)
@@ -85,10 +85,14 @@ continuation_store (MonoContinuation *cont, int state, MonoException **e)
        MonoLMF *lmf = mono_get_lmf ();
        gsize num_bytes;
 
-       if (!cont->domain)
+       if (!cont->domain) {
                *e =  mono_get_exception_argument ("cont", "Continuation not initialized");
-       if (cont->domain != mono_domain_get () || cont->thread_id != GetCurrentThreadId ())
+               return 0;
+       }
+       if (cont->domain != mono_domain_get () || cont->thread_id != GetCurrentThreadId ()) {
                *e = mono_get_exception_argument ("cont", "Continuation from another thread or domain");
+               return 0;
+       }
 
        cont->lmf = lmf;
        cont->return_ip = __builtin_return_address (0);