summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--render/html.c9
-rw-r--r--render/html_forms.c26
-rw-r--r--render/html_internal.h3
3 files changed, 24 insertions, 14 deletions
diff --git a/render/html.c b/render/html.c
index 8c5c76b8e..8dcd7a84c 100644
--- a/render/html.c
+++ b/render/html.c
@@ -113,6 +113,9 @@ dom_string *html_dom_string_coords;
dom_string *html_dom_string_circle;
dom_string *html_dom_string_poly;
dom_string *html_dom_string_polygon;
+dom_string *html_dom_string_button;
+dom_string *html_dom_string_input;
+dom_string *html_dom_string_textarea;
static void html_destroy_objects(html_content *html)
@@ -3140,6 +3143,9 @@ static void html_fini(void)
HTML_DOM_STRING_UNREF(circle);
HTML_DOM_STRING_UNREF(poly);
HTML_DOM_STRING_UNREF(polygon);
+ HTML_DOM_STRING_UNREF(button);
+ HTML_DOM_STRING_UNREF(input);
+ HTML_DOM_STRING_UNREF(textarea);
#undef HTML_DOM_STRING_UNREF
@@ -3269,6 +3275,9 @@ nserror html_init(void)
HTML_DOM_STRING_INTERN(circle);
HTML_DOM_STRING_INTERN(poly);
HTML_DOM_STRING_INTERN(polygon);
+ HTML_DOM_STRING_INTERN(button);
+ HTML_DOM_STRING_INTERN(input);
+ HTML_DOM_STRING_INTERN(textarea);
#undef HTML_DOM_STRING_INTERN
diff --git a/render/html_forms.c b/render/html_forms.c
index c8b3c7fe6..5212b3ab8 100644
--- a/render/html_forms.c
+++ b/render/html_forms.c
@@ -416,7 +416,6 @@ struct form_control *html_forms_get_control_for_node(struct form *forms, dom_nod
struct form_control *ctl = NULL;
dom_exception err;
dom_string *ds_name = NULL;
- char *node_name = NULL;
if (forms == NULL)
return NULL;
@@ -432,18 +431,18 @@ struct form_control *html_forms_get_control_for_node(struct form *forms, dom_nod
/* Step two, extract the node's name so we can construct a gadget. */
err = dom_element_get_tag_name(node, &ds_name);
if (err == DOM_NO_ERR && ds_name != NULL) {
- node_name = strndup(dom_string_data(ds_name),
- dom_string_byte_length(ds_name));
- }
-
- /* Step three, attempt to work out what gadget to make */
- if (node_name && strcasecmp(node_name, "button") == 0)
- ctl = parse_button_element(forms,
- (dom_html_button_element *) node);
- else if (node_name && strcasecmp(node_name, "input") == 0)
- ctl = parse_input_element(forms,
- (dom_html_input_element *) node);
+ /* Step three, attempt to work out what gadget to make */
+ if (dom_string_caseless_isequal(ds_name,
+ html_dom_string_button)) {
+ ctl = parse_button_element(forms,
+ (dom_html_button_element *) node);
+ } else if (dom_string_caseless_isequal(ds_name,
+ html_dom_string_input)) {
+ ctl = parse_input_element(forms,
+ (dom_html_input_element *) node);
+ }
+ }
/* If all else fails, fake gadget time */
if (ctl == NULL)
@@ -451,8 +450,7 @@ struct form_control *html_forms_get_control_for_node(struct form *forms, dom_nod
if (ds_name != NULL)
dom_string_unref(ds_name);
- if (node_name != NULL)
- free(node_name);
+
return ctl;
}
diff --git a/render/html_internal.h b/render/html_internal.h
index ad032f720..a82d7c5c0 100644
--- a/render/html_internal.h
+++ b/render/html_internal.h
@@ -173,6 +173,9 @@ extern struct dom_string *html_dom_string_coords;
extern struct dom_string *html_dom_string_circle;
extern struct dom_string *html_dom_string_poly;
extern struct dom_string *html_dom_string_polygon;
+extern struct dom_string *html_dom_string_button;
+extern struct dom_string *html_dom_string_input;
+extern struct dom_string *html_dom_string_textarea;
extern struct dom_string *html_dom_string_text_javascript;
extern struct dom_string *html_dom_string_type;
extern struct dom_string *html_dom_string_src;