brasero r803 - in trunk: . src



Author: philippr
Date: Thu May  8 18:55:12 2008
New Revision: 803
URL: http://svn.gnome.org/viewvc/brasero?rev=803&view=rev

Log:
	Fix #531831 â crash when adding a directory with a file bigger than 2Gb

	* src/brasero-data-project.c (brasero_data_project_node_loaded),
	(brasero_data_project_node_reloaded):
	* src/brasero-file-node.c (brasero_file_node_set_from_info),
	(brasero_file_node_new_from_info):
	* src/brasero-file-node.h:

Modified:
   trunk/ChangeLog
   trunk/src/brasero-data-project.c
   trunk/src/brasero-file-node.c
   trunk/src/brasero-file-node.h

Modified: trunk/src/brasero-data-project.c
==============================================================================
--- trunk/src/brasero-data-project.c	(original)
+++ trunk/src/brasero-data-project.c	Thu May  8 18:55:12 2008
@@ -1648,6 +1648,7 @@
 	guint64 size;
 	GFileType type;
 	gboolean size_changed;
+	BraseroFileTreeStats *stats;
 	BraseroDataProjectPrivate *priv;
 
 	priv = BRASERO_DATA_PROJECT_PRIVATE (self);
@@ -1725,7 +1726,8 @@
 	}
 
 	size_changed = (BRASERO_SIZE_TO_SECTORS (size, 2048) != BRASERO_FILE_NODE_SECTORS (node));
-	brasero_file_node_set_from_info (node, info);
+	stats = brasero_file_node_get_tree_stats (priv->root, NULL);
+	brasero_file_node_set_from_info (node, stats, info);
 
 	/* Check it that needs a graft: this node has not been moved so we don't
 	 * need to check these cases yet it could turn out that it was a symlink
@@ -1779,6 +1781,7 @@
 				    GFileInfo *info)
 {
 	BraseroDataProjectPrivate *priv;
+	BraseroFileTreeStats *stats;
 	gboolean size_changed;
 	const gchar *name;
 	guint64 size;
@@ -1807,7 +1810,8 @@
 	if (BRASERO_FILE_NODE_MIME (node) && !size_changed)
 		return;
 
-	brasero_file_node_set_from_info (node, info);
+	stats = brasero_file_node_get_tree_stats (priv->root, NULL);
+	brasero_file_node_set_from_info (node, stats, info);
 
 	/* no need to check for graft since it wasn't renamed, it wasn't moved
 	 * its type hasn't changed (and therefore it can't be a symlink. For 

Modified: trunk/src/brasero-file-node.c
==============================================================================
--- trunk/src/brasero-file-node.c	(original)
+++ trunk/src/brasero-file-node.c	Thu May  8 18:55:12 2008
@@ -719,6 +719,7 @@
 
 void
 brasero_file_node_set_from_info (BraseroFileNode *node,
+				 BraseroFileTreeStats *stats,
 				 GFileInfo *info)
 {
 	/* NOTE: the name will never be replaced here since that means
@@ -754,18 +755,10 @@
 
 		sectors = BRASERO_SIZE_TO_SECTORS (g_file_info_get_size (info), 2048);
 
-		if (sectors > BRASERO_FILE_2G_LIMIT && BRASERO_FILE_NODE_SECTORS (node) <= BRASERO_FILE_2G_LIMIT) {
-			BraseroFileTreeStats *stats;
-
-			stats = brasero_file_node_get_tree_stats (node, NULL);
+		if (sectors > BRASERO_FILE_2G_LIMIT && BRASERO_FILE_NODE_SECTORS (node) <= BRASERO_FILE_2G_LIMIT)
 			stats->num_2Gio ++;
-		}
-		else if (sectors <= BRASERO_FILE_2G_LIMIT && BRASERO_FILE_NODE_SECTORS (node) > BRASERO_FILE_2G_LIMIT) {
-			BraseroFileTreeStats *stats;
-
-			stats = brasero_file_node_get_tree_stats (node, NULL);
+		else if (sectors <= BRASERO_FILE_2G_LIMIT && BRASERO_FILE_NODE_SECTORS (node) > BRASERO_FILE_2G_LIMIT)
 			stats->num_2Gio --;
-		}
 
 		/* The node isn't grafted and it's a file. So we must propagate
 		 * its size up to the parent graft node. */
@@ -833,11 +826,13 @@
 				 GCompareFunc sort_func)
 {
 	BraseroFileNode *node;
+	BraseroFileTreeStats *stats;
 
 	node = g_new0 (BraseroFileNode, 1);
 	node->union1.name = g_strdup (g_file_info_get_name (info));
 
-	brasero_file_node_set_from_info (node, info);
+	stats = brasero_file_node_get_tree_stats (parent, NULL);
+	brasero_file_node_set_from_info (node, stats, info);
 
 	/* This must be done after above function */
 	brasero_file_node_add (parent, node, sort_func);

Modified: trunk/src/brasero-file-node.h
==============================================================================
--- trunk/src/brasero-file-node.h	(original)
+++ trunk/src/brasero-file-node.h	Thu May  8 18:55:12 2008
@@ -242,6 +242,7 @@
 			  const gchar *name);
 void
 brasero_file_node_set_from_info (BraseroFileNode *node,
+				 BraseroFileTreeStats *stats,
 				 GFileInfo *info);
 
 void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]