From b7ab328e53c43560b3a661321e6b57e3ee6d6839 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 4 Feb 2017 14:49:38 +0000 Subject: util dom-str: Clean up dom strings on failure. --- src/util/dom-str.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/util/dom-str.c b/src/util/dom-str.c index 03fdd9e..b1e62a3 100644 --- a/src/util/dom-str.c +++ b/src/util/dom-str.c @@ -24,50 +24,50 @@ dom_string *nsl_dom_str_characterdata_modified; /* Exported function, documented in src/util/dom-str.h */ nslayout_error nsl_dom_str_init(void) { + nslayout_error err; dom_exception exc; exc = dom_string_create((const uint8_t *)"DOMNodeInserted", SLEN("DOMNodeInserted"), &nsl_dom_str_node_inserted); if (exc != DOM_NO_ERR) { - /* TODO: free stuff, return value */ - printf("Failed to create string!\n"); - return NSLAYOUT_NO_MEM; + goto out; } exc = dom_string_create((const uint8_t *)"DOMNodeRemoved", SLEN("DOMNodeRemoved"), &nsl_dom_str_node_removed); if (exc != DOM_NO_ERR) { - /* TODO: free stuff, return value */ - printf("Failed to create string!\n"); - return NSLAYOUT_NO_MEM; + goto out; } exc = dom_string_create((const uint8_t *)"DOMSubtreeModified", SLEN("DOMSubtreeModified"), &nsl_dom_str_subtree_modified); if (exc != DOM_NO_ERR) { - /* TODO: free stuff, return value */ - printf("Failed to create string!\n"); - return NSLAYOUT_NO_MEM; + goto out; } exc = dom_string_create((const uint8_t *)"DOMAttrModified", SLEN("DOMAttrModified"), &nsl_dom_str_attr_modified); if (exc != DOM_NO_ERR) { - /* TODO: free stuff, return value */ - printf("Failed to create string!\n"); - return NSLAYOUT_NO_MEM; + goto out; } exc = dom_string_create((const uint8_t *)"DOMCharacterDataModified", SLEN("DOMCharacterDataModified"), &nsl_dom_str_characterdata_modified); if (exc != DOM_NO_ERR) { - /* TODO: free stuff, return value */ - printf("Failed to create string!\n"); - return NSLAYOUT_NO_MEM; + goto out; } - return NSLAYOUT_OK; + err = NSLAYOUT_OK; +out: + if (exc != DOM_NO_ERR) { + printf("Failed to initialise dom_str!\n"); + nsl_dom_str_fini(); + /* TODO: return value */ + err = NSLAYOUT_NO_MEM; + } + + return err; } -- cgit v1.2.3