[haiku-commits] r34876 - haiku/trunk/src/system/kernel

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 3 Jan 2010 19:54:52 +0100 (CET)

Author: axeld
Date: 2010-01-03 19:54:52 +0100 (Sun, 03 Jan 2010)
New Revision: 34876
Changeset: http://dev.haiku-os.org/changeset/34876/haiku

Modified:
   haiku/trunk/src/system/kernel/kernel_daemon.cpp
Log:
* Solved the problem independently from the list.


Modified: haiku/trunk/src/system/kernel/kernel_daemon.cpp
===================================================================
--- haiku/trunk/src/system/kernel/kernel_daemon.cpp     2010-01-03 18:24:27 UTC 
(rev 34875)
+++ haiku/trunk/src/system/kernel/kernel_daemon.cpp     2010-01-03 18:54:52 UTC 
(rev 34876)
@@ -174,19 +174,16 @@
 {
        struct daemon* daemon;
 
-       if (marker.GetDoublyLinkedListLink()->next == NULL
-               && marker.GetDoublyLinkedListLink()->previous == NULL
-               && fDaemons.Head() != &marker) {
-               // Marker is not part of the list yet, just return the first 
entry
+       if (marker.arg == NULL) {
+               // The marker is not part of the list yet, just return the 
first entry
                daemon = fDaemons.Head();
        } else {
                daemon = marker.GetDoublyLinkedListLink()->next;
                fDaemons.Remove(&marker);
-
-               marker.GetDoublyLinkedListLink()->next = NULL;
-               marker.GetDoublyLinkedListLink()->previous = NULL;
        }
 
+       marker.arg = daemon;
+
        if (daemon != NULL)
                fDaemons.Insert(daemon->GetDoublyLinkedListLink()->next, 
&marker);
 
@@ -200,6 +197,8 @@
        struct daemon marker;
        int32 iteration = 0;
 
+       marker.arg = NULL;
+
        while (true) {
                RecursiveLocker locker(fLock);
 


Other related posts:

  • » [haiku-commits] r34876 - haiku/trunk/src/system/kernel - axeld