Thursday, 1 December 2011

[kdelibs/KDE/4.7] khtml/dom: Implement check for extender char.

Git commit 04f6232293f480734a462a25940713adbca82e52 by Andrea Iacovitti.
Committed on 02/12/2011 at 00:10.
Pushed by aiacovitti into branch 'KDE/4.7'.

Implement check for extender char.
FIXED-IN: 4.7.4

M +11 -1 khtml/dom/dom_element.cpp

http://commits.kde.org/kdelibs/04f6232293f480734a462a25940713adbca82e52

diff --git a/khtml/dom/dom_element.cpp b/khtml/dom/dom_element.cpp
index 366e96e..a2638f3 100644
--- a/khtml/dom/dom_element.cpp
+++ b/khtml/dom/dom_element.cpp
@@ -374,6 +374,16 @@ NodeList Element::querySelectorAll(const DOMString& query) const
return res;
}

+static inline bool isExtender(ushort c)
+{ return c > 0x00B6 &&
+ (c == 0x00B7 || c == 0x02D0 || c == 0x02D1 || c == 0x0387 ||
+ c == 0x0640 || c == 0x0E46 || c == 0x0EC6 || c == 0x3005 ||
+ (c >= 0x3031 && c <= 0x3035) ||
+ (c >= 0x309D && c <= 0x309E) ||
+ (c >= 0x30FC && c <= 0x30FE)
+ );
+}
+
bool Element::khtmlValidAttrName(const DOMString &name)
{
// Check if name is valid
@@ -388,7 +398,7 @@ bool Element::khtmlValidAttrName(const DOMString &name)
if ( !ch.isLetter() && !ch.isDigit() && ch != '.'
&& ch != '-' && ch != '_' && ch != ':'
&& ch.category() != QChar::Mark_SpacingCombining
- /* no idea what "extender is" */ )
+ && !isExtender(ch.unicode()) )
return false;
}
return true;

0 comments: