From 89171f671b9c9b4245413b75d2241e59a1d51aed Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Fri, 5 Feb 2016 17:26:47 +0000 Subject: Provide generic copy constructor for HTMLOptionElement. --- src/html/html_option_element.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'src/html/html_option_element.c') diff --git a/src/html/html_option_element.c b/src/html/html_option_element.c index a4dec3c..972b7b5 100644 --- a/src/html/html_option_element.c +++ b/src/html/html_option_element.c @@ -445,9 +445,38 @@ void _dom_virtual_html_option_element_destroy(dom_node_internal *node) } /* The virtual copy function, see src/core/node.c for detail */ -dom_exception _dom_html_option_element_copy(dom_node_internal *old, - dom_node_internal **copy) +dom_exception _dom_html_option_element_copy( + dom_node_internal *old, dom_node_internal **copy) { - return _dom_html_element_copy(old, copy); + dom_html_option_element *new_node; + dom_exception err; + + new_node = malloc(sizeof(dom_html_option_element)); + if (new_node == NULL) + return DOM_NO_MEM_ERR; + + err = dom_html_option_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_option_element_copy_internal( + dom_html_option_element *old, + dom_html_option_element *new) +{ + dom_exception err; + + err = dom_html_element_copy_internal(old, new); + if (err != DOM_NO_ERR) { + return err; + } + + return DOM_NO_ERR; } -- cgit v1.2.3 From 37eb480bbe4ecda49a9c78bfcf5a86c510c42350 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Fri, 5 Feb 2016 17:30:42 +0000 Subject: Fix: HTMLOptionElement's copy constructor copies its specialised members. --- src/html/html_option_element.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/html/html_option_element.c') diff --git a/src/html/html_option_element.c b/src/html/html_option_element.c index 972b7b5..a593ebe 100644 --- a/src/html/html_option_element.c +++ b/src/html/html_option_element.c @@ -477,6 +477,9 @@ dom_exception _dom_html_option_element_copy_internal( return err; } + new->default_selected = old->default_selected; + new->default_selected_set = old->default_selected_set; + return DOM_NO_ERR; } -- cgit v1.2.3