diff options
author | Dom Lachowicz <doml@src.gnome.org> | 2004-03-18 02:25:24 +0000 |
---|---|---|
committer | Dom Lachowicz <doml@src.gnome.org> | 2004-03-18 02:25:24 +0000 |
commit | 073cf52b0fa73db4e8165daf1048e9028fd003c7 (patch) | |
tree | 2e014bc68b902a79325cff4ec8fb760269dbda74 /rsvg-defs.c | |
parent | c8cbc856d5436bb88d49f1d0842f19c740273b74 (diff) | |
download | librsvg-073cf52b0fa73db4e8165daf1048e9028fd003c7.tar.gz |
re-merge the RSVG-filters branch back into HEAD
Diffstat (limited to 'rsvg-defs.c')
-rw-r--r-- | rsvg-defs.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/rsvg-defs.c b/rsvg-defs.c index f94db754..096b384f 100644 --- a/rsvg-defs.c +++ b/rsvg-defs.c @@ -23,6 +23,7 @@ */ #include "config.h" +#include "rsvg-private.h" #include "rsvg-defs.h" #include <glib/ghash.h> @@ -32,6 +33,7 @@ struct _RsvgDefs { GHashTable *hash; + GPtrArray *unnamed; }; RsvgDefs * @@ -40,6 +42,7 @@ rsvg_defs_new (void) RsvgDefs *result = g_new (RsvgDefs, 1); result->hash = g_hash_table_new (g_str_hash, g_str_equal); + result->unnamed = g_ptr_array_new (); return result; } @@ -53,9 +56,10 @@ rsvg_defs_lookup (const RsvgDefs *defs, const char *name) void rsvg_defs_set (RsvgDefs *defs, const char *name, RsvgDefVal *val) { - g_return_if_fail(name); - - g_hash_table_insert (defs->hash, g_strdup (name), val); + if (name == NULL) + g_ptr_array_add(defs->unnamed, val); + else + g_hash_table_insert (defs->hash, g_strdup (name), val); } static void @@ -69,7 +73,12 @@ rsvg_defs_free_each (gpointer key, gpointer value, gpointer user_data) void rsvg_defs_free (RsvgDefs *defs) { + guint i; g_hash_table_foreach (defs->hash, rsvg_defs_free_each, NULL); g_hash_table_destroy (defs->hash); + for (i = 0; i < defs->unnamed->len; i++) + ((RsvgDefVal *)g_ptr_array_index(defs->unnamed, i))->free(g_ptr_array_index(defs->unnamed, i)); + + g_ptr_array_free(defs->unnamed, FALSE); g_free (defs); } |