From 161a5b63e5a1b63251acc715fb81d9b71dabc9a0 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Mon, 2 Dec 2013 23:27:45 +0000 Subject: Fixup for insensitive hash utilisation. --- src/parse/language.c | 14 ++++++++++---- src/select/hash.c | 34 +++++++++++++++++++++++++++------- 2 files changed, 37 insertions(+), 11 deletions(-) (limited to 'src') 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); -- cgit v1.2.3