diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-20 12:58:30 +0200 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-20 13:01:50 +0200 |
commit | 7ef4bf389191ffb3f8f80f4062fcdf45c6047ed2 (patch) | |
tree | 6932e1ba3cc9c5eaeb413b667fee11504d19aae8 | |
parent | dd40aabd81470c10ba9a47377b1f011a519be15a (diff) | |
download | mblaze-7ef4bf389191ffb3f8f80f4062fcdf45c6047ed2.tar.gz mblaze-7ef4bf389191ffb3f8f80f4062fcdf45c6047ed2.tar.xz mblaze-7ef4bf389191ffb3f8f80f4062fcdf45c6047ed2.zip |
thread: fix some more loops
-rw-r--r-- | thread.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/thread.c b/thread.c index d135c34..8aa0efd 100644 --- a/thread.c +++ b/thread.c @@ -188,21 +188,24 @@ out: // if we already have a wrong parent, orphan us first if (c->parent->child == c) // first in list - c->parent->child = c->next; + c->parent->child = c->parent->child->next; for (r = c->parent->child; r; r = r->next) { if (r->next == c) r->next = c->next; } + + c->next = 0; } c->parent = parent; // add at the end - for (r = parent->child; r && r->next; r = r->next) - ; - if (!r) { + if (!parent->child) { parent->child = c; } else { + for (r = parent->child; r && r->next; r = r->next) + if (r == c) + goto out2; r->next = c; c->next = 0; } |