patches/glib-11-gio-fen-assertion-on-root.diff
author lin
Wed, 26 May 2010 06:06:02 +0000
changeset 18035 2152dea8585d
permissions -rw-r--r--
2010-05-26 Lin Ma <[email protected]> * base-specs/glib2.spec: * patches/glib-11-gio-fen-assertion-on-root.diff: Added glib-11-gio-fen-assertion-on-root.diff for bugzilla:6955199.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18035
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
     1
diff --git a/gio/fen/fen-node.c b/gio/fen/fen-node.c
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
     2
index 7238e36..a57e196 100644
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
     3
--- a/gio/fen/fen-node.c
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
     4
+++ b/gio/fen/fen-node.c
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
     5
@@ -417,9 +417,24 @@ node_adjust_deleted(node_t* f)
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
     6
 
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
     7
     FN_W ("%s %s\n", __func__, NODE_NAME(f));
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
     8
 
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
     9
-    for (ancestor = node_find_accessible_ancestor(f);
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    10
-         !NODE_HAS_STATE(ancestor, NODE_STATE_ASSOCIATED) && port_add(ancestor) != 0;
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    11
-         ancestor = node_find_accessible_ancestor(ancestor)) { /* Empty */ }
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    12
+    for (ancestor = NODE_PARENT(f);
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    13
+         ancestor != NULL;
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    14
+         ancestor = NODE_PARENT(ancestor)) {
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    15
+        /* Stop if we find a node which been already associated or is existed
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    16
+         * and can be associated.
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    17
+         */
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    18
+        if (NODE_HAS_STATE(ancestor, NODE_STATE_ASSOCIATED) ||
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    19
+          (node_lstat(ancestor) == 0 && port_add(ancestor) == 0)) {
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    20
+            break;
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    21
+        }
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    22
+    }
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    23
+
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    24
+    /* We assume we shouldn't reach here, because Root is always existed and
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    25
+     * associated. But given bugster#6955199, if PORT FS has problems on root,
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    26
+     * we may reach here. So just return ROOT and the whole GIO fen backend will
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    27
+     * fail.
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    28
+     */
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    29
+    /* g_assert(ancestor != NULL); */
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    30
 }
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    31
 
2152dea8585d 2010-05-26 Lin Ma <[email protected]>
lin
parents:
diff changeset
    32