diff options
author | Michael Drake <michael.drake@codethink.co.uk> | 2016-02-05 15:19:50 +0000 |
---|---|---|
committer | Michael Drake <michael.drake@codethink.co.uk> | 2016-02-05 15:19:50 +0000 |
commit | 89f73a033cd3398b1816903a6a0714d3aacee524 (patch) | |
tree | f4038e8d89723c309c4a07a8ad9428579be46970 /src | |
parent | b38b01741aa82b7bbc81fc36d34952be5a422c21 (diff) | |
download | libdom-89f73a033cd3398b1816903a6a0714d3aacee524.tar.gz |
Fix: Implement HTMLElement copy constructor.
It can't just use the Element copy constructor, as there is aditional
stuff in the HTMLElement struct.
Diffstat (limited to 'src')
-rw-r--r-- | src/html/html_element.c | 32 | ||||
-rw-r--r-- | src/html/html_element.h | 6 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/html/html_element.c b/src/html/html_element.c index 85380ffc..65a75ca0 100644 --- a/src/html/html_element.c +++ b/src/html/html_element.c @@ -101,7 +101,37 @@ void _dom_html_element_destroy(dom_node_internal *node) dom_exception _dom_html_element_copy(dom_node_internal *old, dom_node_internal **copy) { - return _dom_element_copy(old, copy); + dom_html_element *new_node; + dom_exception err; + + new_node = malloc(sizeof(dom_html_element)); + if (new_node == NULL) + return DOM_NO_MEM_ERR; + + err = dom_html_element_copy_internal(old, new_node); + if (err != DOM_NO_ERR) { + free(new_node); + return err; + } + + *copy = (dom_node_internal *) new_node; + + return DOM_NO_ERR; +} + +dom_exception _dom_html_element_copy_internal( + dom_html_element *old, dom_html_element *new) +{ + dom_exception err; + + err = dom_element_copy_internal(old, new); + if (err != DOM_NO_ERR) { + return err; + } + + new->type = old->type; + + return DOM_NO_ERR; } /*-----------------------------------------------------------------------*/ diff --git a/src/html/html_element.h b/src/html/html_element.h index 92c96ab2..0290569c 100644 --- a/src/html/html_element.h +++ b/src/html/html_element.h @@ -156,6 +156,12 @@ dom_exception dom_html_element_get_dom_ulong_property(dom_html_element *ele, dom_exception dom_html_element_set_dom_ulong_property(dom_html_element *ele, const char *name, uint32_t len, dom_ulong value); +/* Helper functions*/ +dom_exception _dom_html_element_copy_internal(dom_html_element *old, + dom_html_element *new); +#define dom_html_element_copy_internal(o, n) _dom_html_element_copy_internal( \ + (dom_html_element *) (o), (dom_html_element *) (n)) + extern struct dom_html_element_vtable _dom_html_element_vtable; #endif |