Compare commits

...

1 Commits

Author SHA1 Message Date
michael@notriddle.com
67fa2d6f62 Avoid splitting a code point when parsing HTMLImageElement.usemap
Fixes #15883
2017-03-25 01:55:16 +00:00
2 changed files with 12 additions and 3 deletions

View File

@@ -422,16 +422,17 @@ impl HTMLImageElement {
};
let value = usemap_attr.value();
let (first, last) = value.split_at(1);
if first != "#" || last.len() == 0 {
if value.len() <= 1 || value.bytes()[0] != b'#' {
return None
}
let value = &value[1..];
let map = self.upcast::<Node>()
.following_siblings()
.filter_map(Root::downcast::<HTMLMapElement>)
.find(|n| n.upcast::<Element>().get_string_attribute(&LocalName::from("name")) == last);
.find(|n| n.upcast::<Element>().get_string_attribute(&LocalName::from("name")) == value);
let elements: Vec<Root<HTMLAreaElement>> = map.unwrap().upcast::<Node>()
.children()

View File

@@ -11,6 +11,14 @@
</head>
<body>
<div data-expect="no match">
<img src="/images/threecolors.png" usemap="&#x1F4A9;"/>
<object data="/images/threecolors.png" usemap="&#x1F4A9;"></object>
<map name="&#x1F4A9;">
<area shape="rect" coords="0,0,99,50" href="#area-&#x1F4A9;"/>
</map>
</div>
<div data-expect="no match">
<img src="/images/threecolors.png" usemap="no-hash-name"/>
<object data="/images/threecolors.png" usemap="no-hash-name"></object>