Add a wrapper function to decode base64, returning a null-terminated string.
[claws.git] / src / gtk / gtkutils.c
index 5bcea9929895e68f14f80fd05719cc948ee05b20..8cdbd72e567d1dfbde6dbbf42a38d034e7fb5799 100644 (file)
@@ -57,7 +57,6 @@
 #include "prefs_account.h"
 #include "prefs_common.h"
 #include "manage_window.h"
-#include "base64.h"
 #include "manual.h"
 #include "combobox.h"
 
@@ -1112,8 +1111,9 @@ GtkWidget *xface_get_from_header(const gchar *o_xface)
 GtkWidget *face_get_from_header(const gchar *o_face)
 {
        gchar face[2048];
-       gchar face_png[2048];
-       gint pngsize;
+       gchar *face_png;
+       gchar *tmp;
+       gsize pngsize;
        GdkPixbuf *pixbuf;
        GError *error = NULL;
        GdkPixbufLoader *loader = gdk_pixbuf_loader_new ();
@@ -1127,14 +1127,17 @@ GtkWidget *face_get_from_header(const gchar *o_face)
        unfold_line(face); /* strip all whitespace and linebreaks */
        remove_space(face);
 
-       pngsize = base64_decode(face_png, face, strlen(face));
+       face_png = g_base64_decode(face, &pngsize);
+       debug_print("---------------------- loaded face png\n");
 
        if (!gdk_pixbuf_loader_write (loader, face_png, pngsize, &error) ||
            !gdk_pixbuf_loader_close (loader, &error)) {
                g_warning("loading face failed\n");
                g_object_unref(loader);
+               g_free(face_png);
                return NULL;
        }
+       g_free(face_png);
 
        pixbuf = g_object_ref(gdk_pixbuf_loader_get_pixbuf(loader));