[gtk+] cssprovider: Use g_file_load_bytes()



commit 452f2f03946f8b7aa272305c45456e5053c843ce
Author: Benjamin Otte <otte redhat com>
Date:   Mon Feb 5 17:20:17 2018 +0100

    cssprovider: Use g_file_load_bytes()
    
    This way, we get a special no-copy case for resources.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=790270

 gtk/gtkcssprovider.c |   17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 8a9a2d5..d4d865b 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -1386,17 +1386,17 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider,
                                 const char     *text)
 {
   GtkCssScanner *scanner;
-  char *free_data = NULL;
+  GBytes *bytes;
 
   if (text == NULL)
     {
       GError *load_error = NULL;
 
-      if (g_file_load_contents (file, NULL,
-                                &free_data, NULL,
-                                NULL, &load_error))
+      bytes = g_file_load_bytes (file, NULL, NULL, &load_error);
+
+      if (bytes)
         {
-          text = free_data;
+          text = g_bytes_get_data (bytes, NULL);
         }
       else
         {
@@ -1428,6 +1428,10 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider,
             }
         }
     }
+  else
+    {
+      bytes = NULL;
+    }
 
   if (text)
     {
@@ -1445,7 +1449,8 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider,
         gtk_css_provider_postprocess (css_provider);
     }
 
-  g_free (free_data);
+  if (bytes)
+    g_bytes_unref (bytes);
 }
 
 /**


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