summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Pöschel <[email protected]>2026-08-23 11:58:46 +0200
committerLuke from DC <[email protected]>2026-08-31 05:34:46 +0000
commit32bc1b60f1a82d53b049f4da588a0dd9fc5be7e3 (patch)
tree6b3a6baa46ca2ce192b822e2aa0aa637e606332a
parent8d4ed122849f4dccb7752b77c76d2c224d382634 (diff)
downloadcaja-32bc1b60f1a82d53b049f4da588a0dd9fc5be7e3.tar.bz2
caja-32bc1b60f1a82d53b049f4da588a0dd9fc5be7e3.tar.xz
fm-tree-model: compare removed mount root by URI
Due to a race condition, the corresponding file entry may already have been deleted. So the node of the unmounted device would be created as a new file again here, leading to two different files having the same URI. This way the loop comparison would never match then. Fixes #1903.
-rw-r--r--src/file-manager/fm-tree-model.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/file-manager/fm-tree-model.c b/src/file-manager/fm-tree-model.c
index fba39e1c..14c70d80 100644
--- a/src/file-manager/fm-tree-model.c
+++ b/src/file-manager/fm-tree-model.c
@@ -1774,17 +1774,15 @@ void
fm_tree_model_remove_root_uri (FMTreeModel *model, const char *uri)
{
TreeNode *node;
- CajaFile *file;
- file = caja_file_get_by_uri (uri);
for (node = model->details->root_node; node != NULL; node = node->next)
{
- if (file == node->file)
+ /* compare by URI, as file entry may already have been deleted */
+ if (caja_file_matches_uri(node->file, uri))
{
break;
}
}
- caja_file_unref (file);
if (node)
{