diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2012-06-24 15:47:13 -0400 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2012-06-24 17:05:08 -0400 |
commit | 30ca729728e28ea3f6dcb09cb7bfc06434a72197 (patch) | |
tree | d1644d8831e8aeeac38ec3e9a1ffc2e1d02c7a53 | |
parent | 73b04a6ced42bc79107cbb3f23bf53afc4945d06 (diff) | |
download | libcroco-30ca729728e28ea3f6dcb09cb7bfc06434a72197.tar.gz |
cr-om-parser: Stop memory leak
The parser refs the doc handler, so we need to unref it here.
https://bugzilla.gnome.org/show_bug.cgi?id=678736
-rw-r--r-- | src/cr-om-parser.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/cr-om-parser.c b/src/cr-om-parser.c index a62e98d..ea622e3 100644 --- a/src/cr-om-parser.c +++ b/src/cr-om-parser.c @@ -142,7 +142,7 @@ static enum CRStatus cr_om_parser_init_default_sac_handler (CROMParser * a_this) { CRDocHandler *sac_handler = NULL; - gboolean free_hdlr_if_error = FALSE; + gboolean created_handler = FALSE; enum CRStatus status = CR_OK; g_return_val_if_fail (a_this && PRIVATE (a_this) @@ -155,7 +155,7 @@ cr_om_parser_init_default_sac_handler (CROMParser * a_this) if (!sac_handler) { sac_handler = cr_doc_handler_new (); - free_hdlr_if_error = TRUE; + created_handler = TRUE; } /* @@ -177,15 +177,10 @@ cr_om_parser_init_default_sac_handler (CROMParser * a_this) sac_handler->end_media = end_media; sac_handler->import_style = import_style; - status = cr_parser_set_sac_handler (PRIVATE (a_this)->parser, - sac_handler); - if (status == CR_OK) { - return CR_OK; - } - - if (sac_handler && free_hdlr_if_error == TRUE) { - cr_doc_handler_destroy (sac_handler); - sac_handler = NULL; + if (created_handler) { + status = cr_parser_set_sac_handler (PRIVATE (a_this)->parser, + sac_handler); + cr_doc_handler_unref (sac_handler); } return status; |