summaryrefslogtreecommitdiff
path: root/src/core/document.c
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-11-03 19:12:10 +0000
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-11-03 19:12:10 +0000
commit45048d167c9f1e9ca31317ce19a3e9ca23968d07 (patch)
tree43327263ed97ffd148c8cb74c13ef661102ad877 /src/core/document.c
parent9874c9759fc95f12f3b0246a4f4ef7bce6e5fcf9 (diff)
downloadlibdom-45048d167c9f1e9ca31317ce19a3e9ca23968d07.tar.gz
libdom-45048d167c9f1e9ca31317ce19a3e9ca23968d07.tar.bz2
Ensure we memoise all the strings used in the core event dispatch
Diffstat (limited to 'src/core/document.c')
-rw-r--r--src/core/document.c98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/core/document.c b/src/core/document.c
index d668c0e..97d93a6 100644
--- a/src/core/document.c
+++ b/src/core/document.c
@@ -156,6 +156,97 @@ dom_exception _dom_document_initialise(dom_document *doc,
return err;
}
+ err = dom_string_create_interned((const uint8_t *) "DOMNodeInserted",
+ SLEN("DOMNodeInserted"),
+ &doc->_memo_domnodeinserted);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(doc->_memo_empty);
+ dom_string_unref(doc->id_name);
+ dom_string_unref(doc->class_string);
+ return err;
+ }
+
+ err = dom_string_create_interned((const uint8_t *) "DOMNodeRemoved",
+ SLEN("DOMNodeRemoved"),
+ &doc->_memo_domnoderemoved);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(doc->_memo_domnodeinserted);
+ dom_string_unref(doc->_memo_empty);
+ dom_string_unref(doc->id_name);
+ dom_string_unref(doc->class_string);
+ return err;
+ }
+
+ err = dom_string_create_interned((const uint8_t *) "DOMNodeInsertedIntoDocument",
+ SLEN("DOMNodeInsertedIntoDocument"),
+ &doc->_memo_domnodeinsertedintodocument);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(doc->_memo_domnoderemoved);
+ dom_string_unref(doc->_memo_domnodeinserted);
+ dom_string_unref(doc->_memo_empty);
+ dom_string_unref(doc->id_name);
+ dom_string_unref(doc->class_string);
+ return err;
+ }
+
+ err = dom_string_create_interned((const uint8_t *) "DOMNodeRemovedFromDocument",
+ SLEN("DOMNodeRemovedFromDocument"),
+ &doc->_memo_domnoderemovedfromdocument);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(doc->_memo_domnodeinsertedintodocument);
+ dom_string_unref(doc->_memo_domnoderemoved);
+ dom_string_unref(doc->_memo_domnodeinserted);
+ dom_string_unref(doc->_memo_empty);
+ dom_string_unref(doc->id_name);
+ dom_string_unref(doc->class_string);
+ return err;
+ }
+
+ err = dom_string_create_interned((const uint8_t *) "DOMAttrModified",
+ SLEN("DOMAttrModified"),
+ &doc->_memo_domattrmodified);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(doc->_memo_domnoderemovedfromdocument);
+ dom_string_unref(doc->_memo_domnodeinsertedintodocument);
+ dom_string_unref(doc->_memo_domnoderemoved);
+ dom_string_unref(doc->_memo_domnodeinserted);
+ dom_string_unref(doc->_memo_empty);
+ dom_string_unref(doc->id_name);
+ dom_string_unref(doc->class_string);
+ return err;
+ }
+
+ err = dom_string_create_interned((const uint8_t *) "DOMCharacterDataModified",
+ SLEN("DOMCharacterDataModified"),
+ &doc->_memo_domcharacterdatamodified);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(doc->_memo_domattrmodified);
+ dom_string_unref(doc->_memo_domnoderemovedfromdocument);
+ dom_string_unref(doc->_memo_domnodeinsertedintodocument);
+ dom_string_unref(doc->_memo_domnoderemoved);
+ dom_string_unref(doc->_memo_domnodeinserted);
+ dom_string_unref(doc->_memo_empty);
+ dom_string_unref(doc->id_name);
+ dom_string_unref(doc->class_string);
+ return err;
+ }
+
+ err = dom_string_create_interned((const uint8_t *) "DOMSubtreeModified",
+ SLEN("DOMSubtreeModified"),
+ &doc->_memo_domsubtreemodified);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(doc->_memo_domcharacterdatamodified);
+ dom_string_unref(doc->_memo_domattrmodified);
+ dom_string_unref(doc->_memo_domnoderemovedfromdocument);
+ dom_string_unref(doc->_memo_domnodeinsertedintodocument);
+ dom_string_unref(doc->_memo_domnoderemoved);
+ dom_string_unref(doc->_memo_domnodeinserted);
+ dom_string_unref(doc->_memo_empty);
+ dom_string_unref(doc->id_name);
+ dom_string_unref(doc->class_string);
+ return err;
+ }
+
/* We should not pass a NULL when all things hook up */
return _dom_document_event_internal_initialise(doc, &doc->dei, daf);
}
@@ -191,6 +282,13 @@ bool _dom_document_finalise(dom_document *doc)
dom_string_unref(doc->class_string);
dom_string_unref(doc->_memo_empty);
+ dom_string_unref(doc->_memo_domnodeinserted);
+ dom_string_unref(doc->_memo_domnoderemoved);
+ dom_string_unref(doc->_memo_domnodeinsertedintodocument);
+ dom_string_unref(doc->_memo_domnoderemovedfromdocument);
+ dom_string_unref(doc->_memo_domattrmodified);
+ dom_string_unref(doc->_memo_domcharacterdatamodified);
+ dom_string_unref(doc->_memo_domsubtreemodified);
_dom_document_event_internal_finalise(doc, &doc->dei);