measure_disk_usage: properly report results
authorRyan Lortie <desrt@desrt.ca>
Tue, 17 Sep 2013 13:53:18 +0000 (09:53 -0400)
committerRyan Lortie <desrt@desrt.ca>
Tue, 17 Sep 2013 13:53:18 +0000 (09:53 -0400)
In the async case, make sure we copy all of the out parameters from the
results structure, not just 'disk_usage'.

gio/gfile.c

index d321c24..afaee21 100644 (file)
@@ -7494,19 +7494,25 @@ g_file_real_measure_disk_usage_finish (GFile         *file,
                                        guint64       *num_files,
                                        GError       **error)
 {
-  guint64 *reported_usage;
+  MeasureResult *measure_result;
 
   g_return_val_if_fail (g_task_is_valid (result, file), FALSE);
 
-  reported_usage = g_task_propagate_pointer (G_TASK (result), error);
+  measure_result = g_task_propagate_pointer (G_TASK (result), error);
 
-  if (reported_usage == NULL)
+  if (measure_result == NULL)
     return FALSE;
 
   if (disk_usage)
-    *disk_usage = *reported_usage;
+    *disk_usage = measure_result->disk_usage;
 
-  g_free (reported_usage);
+  if (num_dirs)
+    *num_dirs = measure_result->num_dirs;
+
+  if (num_files)
+    *num_files = measure_result->num_files;
+
+  g_free (measure_result);
 
   return TRUE;
 }