diff options
-rw-r--r-- | content/content_factory.c | 18 | ||||
-rw-r--r-- | content/content_factory.h | 2 | ||||
-rw-r--r-- | desktop/netsurf.c | 3 |
3 files changed, 23 insertions, 0 deletions
diff --git a/content/content_factory.c b/content/content_factory.c index 95e7679ad..ae226a4d1 100644 --- a/content/content_factory.c +++ b/content/content_factory.c @@ -45,6 +45,24 @@ typedef struct content_handler_entry { static content_handler_entry *content_handlers; /** + * Clean up after the content factory + */ +void content_factory_fini(void) +{ + content_handler_entry *victim; + + while (content_handlers != NULL) { + victim = content_handlers; + + content_handlers = content_handlers->next; + + lwc_string_unref(victim->mime_type); + + free(victim); + } +} + +/** * Register a handler with the content factory * * \param mime_type MIME type to handle diff --git a/content/content_factory.h b/content/content_factory.h index 330ce6812..aff7a64ac 100644 --- a/content/content_factory.h +++ b/content/content_factory.h @@ -31,6 +31,8 @@ struct llcache_handle; typedef struct content_handler content_handler; +void content_factory_fini(void); + nserror content_factory_register_handler(lwc_string *mime_type, const content_handler *handler); diff --git a/desktop/netsurf.c b/desktop/netsurf.c index 9861e7e4a..fe93818ea 100644 --- a/desktop/netsurf.c +++ b/desktop/netsurf.c @@ -32,6 +32,7 @@ #include "utils/config.h" #include "utils/utsname.h" +#include "content/content_factory.h" #include "content/fetch.h" #include "content/hlcache.h" #include "content/urldb.h" @@ -214,6 +215,8 @@ void netsurf_exit(void) html_fini(); css_fini(); + content_factory_fini(); + LOG(("Closing utf8")); utf8_finalise(); |