[brasero] Fix a potential crash when a node is loaded but removed by the user because it is too big, ...
- From: Philippe Rouquier <philippr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [brasero] Fix a potential crash when a node is loaded but removed by the user because it is too big, ...
- Date: Thu, 30 Jul 2009 07:33:45 +0000 (UTC)
commit 99cbd8833324fbf9879d88e8272060b536851f39
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date: Mon Jul 27 14:08:52 2009 +0200
Fix a potential crash when a node is loaded but removed by the user because it is too big, ...
libbrasero-burn/brasero-data-project.c | 10 ++++++----
libbrasero-burn/brasero-data-project.h | 2 +-
libbrasero-burn/brasero-data-vfs.c | 12 ++++++++----
3 files changed, 15 insertions(+), 9 deletions(-)
---
diff --git a/libbrasero-burn/brasero-data-project.c b/libbrasero-burn/brasero-data-project.c
index 57e8242..ebf7dd7 100644
--- a/libbrasero-burn/brasero-data-project.c
+++ b/libbrasero-burn/brasero-data-project.c
@@ -1988,7 +1988,7 @@ brasero_data_project_update_uri (BraseroDataProject *self,
brasero_data_project_graft_is_needed (self, former_uri_node);
}
-void
+gboolean
brasero_data_project_node_loaded (BraseroDataProject *self,
BraseroFileNode *node,
const gchar *uri,
@@ -2009,7 +2009,7 @@ brasero_data_project_node_loaded (BraseroDataProject *self,
/* exclude the URI we're replacing */
brasero_data_project_exclude_uri (self, uri);
brasero_data_project_convert_to_fake (self, node);
- return;
+ return TRUE;
}
priv->loading --;
@@ -2052,7 +2052,7 @@ brasero_data_project_node_loaded (BraseroDataProject *self,
&& BRASERO_FILE_NODE_SECTORS (node) < BRASERO_FILE_2G_LIMIT) {
if (brasero_data_project_file_signal (self, G2_FILE_SIGNAL, g_file_info_get_name (info))) {
brasero_data_project_remove_node (self, node);
- return;
+ return FALSE;
}
}
}
@@ -2060,7 +2060,7 @@ brasero_data_project_node_loaded (BraseroDataProject *self,
/* avoid signalling twice for the same directory */
if (!brasero_data_project_is_deep (self, node->parent, BRASERO_FILE_NODE_NAME (node), node->is_file)) {
brasero_data_project_remove_node (self, node);
- return;
+ return FALSE;
}
size_changed = (BRASERO_BYTES_TO_SECTORS (size, 2048) != BRASERO_FILE_NODE_SECTORS (node));
@@ -2110,6 +2110,8 @@ brasero_data_project_node_loaded (BraseroDataProject *self,
g_signal_emit (self,
brasero_data_project_signals [SIZE_CHANGED_SIGNAL],
0);
+
+ return TRUE;
}
void
diff --git a/libbrasero-burn/brasero-data-project.h b/libbrasero-burn/brasero-data-project.h
index 384466a..1137917 100644
--- a/libbrasero-burn/brasero-data-project.h
+++ b/libbrasero-burn/brasero-data-project.h
@@ -189,7 +189,7 @@ void
brasero_data_project_destroy_node (BraseroDataProject *self,
BraseroFileNode *node);
-void
+gboolean
brasero_data_project_node_loaded (BraseroDataProject *project,
BraseroFileNode *node,
const gchar *uri,
diff --git a/libbrasero-burn/brasero-data-vfs.c b/libbrasero-burn/brasero-data-vfs.c
index fae3caf..f2c58f1 100644
--- a/libbrasero-burn/brasero-data-vfs.c
+++ b/libbrasero-burn/brasero-data-vfs.c
@@ -639,6 +639,7 @@ brasero_data_vfs_loading_node_result (GObject *owner,
* hidden files. */
for (iter = nodes; iter; iter = iter->next) {
guint reference;
+ gboolean added;
BraseroFileNode *node;
reference = GPOINTER_TO_INT (iter->data);
@@ -679,10 +680,13 @@ brasero_data_vfs_loading_node_result (GObject *owner,
}
/* update node */
- brasero_data_project_node_loaded (BRASERO_DATA_PROJECT (self),
- node,
- uri,
- info);
+ added = brasero_data_project_node_loaded (BRASERO_DATA_PROJECT (self),
+ node,
+ uri,
+ info);
+
+ if (!added)
+ continue;
/* See what type of file it is. If that's a directory then
* explore it right away */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]