* src/procmsg.c
authorAlfons Hoogervorst <alfons@proteus.demon.nl>
Tue, 17 Jun 2003 18:00:11 +0000 (18:00 +0000)
committerAlfons Hoogervorst <alfons@proteus.demon.nl>
Tue, 17 Jun 2003 18:00:11 +0000 (18:00 +0000)
prevent threading problems when a node is an ancestor (parent / great parent),
which mostly happens with circular references (thanks to Phillipe Gramoull√©
for finding an sample set of messages)

ChangeLog.claws
configure.ac
src/procmsg.c

index cab3b9b..bdd7b42 100644 (file)
@@ -1,3 +1,10 @@
+2003-06-17 [alfons]    0.9.0claws41
+
+       * src/procmsg.c
+               prevent threading problems when a node is an ancestor (parent / great parent),
+               which mostly happens with circular references (thanks to Phillipe Gramoull√©
+               for finding an sample set of messages)
+
 2003-06-16 [christoph] 0.9.0claws40
 
        * src/main.c
index d4e3a6c..ed80da9 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws40
+EXTRA_VERSION=claws41
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
index 2cb62f3..d501bb3 100644 (file)
@@ -201,7 +201,10 @@ GNode *procmsg_get_thread_tree(GSList *mlist)
                parent = NULL;
                if (msginfo->inreplyto) 
                        parent = g_hash_table_lookup(msgid_table, msginfo->inreplyto);
-               if (parent && parent != node) {
+               /* node should not be the parent, and node should not be an ancestor
+                * of parent (circular reference) */
+               if (parent && parent != node 
+               && !g_node_is_ancestor(node, parent)) {
                        g_node_unlink(node);
                        g_node_insert_before
                                (parent, parent->children, node);