summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-12-02 23:27:45 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2013-12-02 23:27:45 +0000
commit161a5b63e5a1b63251acc715fb81d9b71dabc9a0 (patch)
tree947c5b4426a30fb31298592423d2254232687e07
parent1a820d249aba97dbc36cdd88cc114918db2eb987 (diff)
downloadlibcss-161a5b63e5a1b63251acc715fb81d9b71dabc9a0.tar.gz
libcss-161a5b63e5a1b63251acc715fb81d9b71dabc9a0.tar.bz2
Fixup for insensitive hash utilisation.
-rw-r--r--src/parse/language.c14
-rw-r--r--src/select/hash.c34
2 files changed, 37 insertions, 11 deletions
diff --git a/src/parse/language.c b/src/parse/language.c
index ed6d515..7003f0b 100644
--- a/src/parse/language.c
+++ b/src/parse/language.c
@@ -1001,7 +1001,8 @@ css_error parseClass(css_language *c, const parserutils_vector *vector,
qname.name = token->idata;
/* Ensure lwc insensitive string is available for class names */
- if (lwc__intern_caseless_string(qname.name) != lwc_error_ok)
+ if (qname.name->insensitive == NULL &&
+ lwc__intern_caseless_string(qname.name) != lwc_error_ok)
return CSS_NOMEM;
return css__stylesheet_selector_detail_init(c->sheet,
@@ -1455,7 +1456,8 @@ css_error parsePseudo(css_language *c, const parserutils_vector *vector,
/* Ensure lwc insensitive string is available
* for element names */
- if (lwc__intern_caseless_string(
+ if (qname.name->insensitive == NULL &&
+ lwc__intern_caseless_string(
qname.name) != lwc_error_ok)
return CSS_NOMEM;
@@ -1514,7 +1516,9 @@ css_error parseSpecific(css_language *c,
qname.name = token->idata;
/* Ensure lwc insensitive string is available for id names */
- if (lwc__intern_caseless_string(qname.name) != lwc_error_ok)
+ if (qname.name->insensitive == NULL &&
+ lwc__intern_caseless_string(
+ qname.name) != lwc_error_ok)
return CSS_NOMEM;
error = css__stylesheet_selector_detail_init(c->sheet,
@@ -1634,7 +1638,9 @@ css_error parseTypeSelector(css_language *c, const parserutils_vector *vector,
}
/* Ensure lwc insensitive string is available for element names */
- if (lwc__intern_caseless_string(qname->name) != lwc_error_ok)
+ if (qname->name->insensitive == NULL &&
+ lwc__intern_caseless_string(
+ qname->name) != lwc_error_ok)
return CSS_NOMEM;
return CSS_OK;
diff --git a/src/select/hash.c b/src/select/hash.c
index 71b655b..6c0ab7c 100644
--- a/src/select/hash.c
+++ b/src/select/hash.c
@@ -383,6 +383,12 @@ css_error css__selector_hash_find(css_selector_hash *hash,
/* Find index */
mask = hash->elements.n_slots - 1;
+
+ if (req->qname.name->insensitive == NULL &&
+ lwc__intern_caseless_string(
+ req->qname.name) != lwc_error_ok) {
+ return CSS_NOMEM;
+ }
index = _hash_name(req->qname.name) & mask;
head = &hash->elements.slots[index];
@@ -393,9 +399,9 @@ css_error css__selector_hash_find(css_selector_hash *hash,
lwc_error lerror;
bool match = false;
- lerror = lwc_string_caseless_isequal(
- req->qname.name,
- head->sel->data.qname.name,
+ lerror = lwc_string_isequal(
+ req->qname.name->insensitive,
+ head->sel->data.qname.name->insensitive,
&match);
if (lerror != lwc_error_ok)
return css_error_from_lwc_error(lerror);
@@ -449,6 +455,12 @@ css_error css__selector_hash_find_by_class(css_selector_hash *hash,
/* Find index */
mask = hash->classes.n_slots - 1;
+
+ if (req->class->insensitive == NULL &&
+ lwc__intern_caseless_string(
+ req->class) != lwc_error_ok) {
+ return CSS_NOMEM;
+ }
index = _hash_name(req->class) & mask;
head = &hash->classes.slots[index];
@@ -462,8 +474,9 @@ css_error css__selector_hash_find_by_class(css_selector_hash *hash,
n = _class_name(head->sel);
if (n != NULL) {
- lerror = lwc_string_caseless_isequal(
- req->class, n, &match);
+ lerror = lwc_string_isequal(
+ req->class->insensitive,
+ n->insensitive, &match);
if (lerror != lwc_error_ok)
return css_error_from_lwc_error(lerror);
@@ -521,6 +534,12 @@ css_error css__selector_hash_find_by_id(css_selector_hash *hash,
/* Find index */
mask = hash->ids.n_slots - 1;
+
+ if (req->id->insensitive == NULL &&
+ lwc__intern_caseless_string(
+ req->id) != lwc_error_ok) {
+ return CSS_NOMEM;
+ }
index = _hash_name(req->id) & mask;
head = &hash->ids.slots[index];
@@ -534,8 +553,9 @@ css_error css__selector_hash_find_by_id(css_selector_hash *hash,
n = _id_name(head->sel);
if (n != NULL) {
- lerror = lwc_string_caseless_isequal(
- req->id, n, &match);
+ lerror = lwc_string_isequal(
+ req->id->insensitive,
+ n->insensitive, &match);
if (lerror != lwc_error_ok)
return css_error_from_lwc_error(lerror);