From 12971f64a66b154cca38d4fec5350cb43e7fae4f Mon Sep 17 00:00:00 2001 From: Caleb Hearon Date: Wed, 27 Jul 2016 12:21:06 -0400 Subject: [PATCH] support GTK+ versions without g_list_free_full particularly, the wiki links to a GTK build that does not have g_list_free_full for building on Windows --- src/register_font.cc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/register_font.cc b/src/register_font.cc index b17774b..f98a66f 100644 --- a/src/register_font.cc +++ b/src/register_font.cc @@ -102,6 +102,20 @@ _name_def_compare(gconstpointer a, gconstpointer b) { return ((NameDef*)a)->rank > ((NameDef*)b)->rank ? -1 : 1; } +// Some versions of GTK+ do not have this, particualrly the one we +// currently link to in node-canvas's wiki +void +_free_g_list_item(gpointer data, gpointer user_data) { + NameDef *d = (NameDef *)data; + free((void *)(d->buf)); +} + +void +_g_list_free_full(GList *list) { + g_list_foreach(list, _free_g_list_item, NULL); + g_list_free(list); +} + char * get_family_name(FT_Face face) { FT_SfntName name; @@ -126,7 +140,7 @@ get_family_name(FT_Face face) { GList *best_def = g_list_first(list); if (best_def) utf8name = (char*) strdup(((NameDef*)best_def->data)->buf); - if (list) g_list_free_full(list, free); + if (list) _g_list_free_full(list); return utf8name; }