mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 15:13:28 +00:00
netsurf: node's attributes can be null
This commit is contained in:
@@ -99,7 +99,8 @@ pub const Element = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_attributes(self: *parser.Element) !*parser.NamedNodeMap {
|
pub fn get_attributes(self: *parser.Element) !*parser.NamedNodeMap {
|
||||||
return try parser.nodeGetAttributes(parser.elementToNode(self));
|
// An element must have non-nil attributes.
|
||||||
|
return try parser.nodeGetAttributes(parser.elementToNode(self)) orelse unreachable;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_innerHTML(self: *parser.Element, state: *SessionState) ![]const u8 {
|
pub fn get_innerHTML(self: *parser.Element, state: *SessionState) ![]const u8 {
|
||||||
|
|||||||
@@ -38,18 +38,18 @@ pub fn writeNode(node: *parser.Node, writer: anytype) anyerror!void {
|
|||||||
try writer.writeAll(tag);
|
try writer.writeAll(tag);
|
||||||
|
|
||||||
// write the attributes
|
// write the attributes
|
||||||
const map = try parser.nodeGetAttributes(node);
|
const _map = try parser.nodeGetAttributes(node);
|
||||||
|
if (_map) |map| {
|
||||||
const ln = try parser.namedNodeMapGetLength(map);
|
const ln = try parser.namedNodeMapGetLength(map);
|
||||||
var i: u32 = 0;
|
for (0..ln) |i| {
|
||||||
while (i < ln) {
|
const attr = try parser.namedNodeMapItem(map, @intCast(i)) orelse break;
|
||||||
const attr = try parser.namedNodeMapItem(map, i) orelse break;
|
|
||||||
try writer.writeAll(" ");
|
try writer.writeAll(" ");
|
||||||
try writer.writeAll(try parser.attributeGetName(attr));
|
try writer.writeAll(try parser.attributeGetName(attr));
|
||||||
try writer.writeAll("=\"");
|
try writer.writeAll("=\"");
|
||||||
const attribute_value = try parser.attributeGetValue(attr) orelse "";
|
const attribute_value = try parser.attributeGetValue(attr) orelse "";
|
||||||
try writeEscapedAttributeValue(writer, attribute_value);
|
try writeEscapedAttributeValue(writer, attribute_value);
|
||||||
try writer.writeAll("\"");
|
try writer.writeAll("\"");
|
||||||
i += 1;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try writer.writeAll(">");
|
try writer.writeAll(">");
|
||||||
|
|||||||
@@ -1338,11 +1338,11 @@ pub fn nodeHasAttributes(node: *Node) !bool {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn nodeGetAttributes(node: *Node) !*NamedNodeMap {
|
pub fn nodeGetAttributes(node: *Node) !?*NamedNodeMap {
|
||||||
var res: ?*NamedNodeMap = undefined;
|
var res: ?*NamedNodeMap = undefined;
|
||||||
const err = nodeVtable(node).dom_node_get_attributes.?(node, &res);
|
const err = nodeVtable(node).dom_node_get_attributes.?(node, &res);
|
||||||
try DOMErr(err);
|
try DOMErr(err);
|
||||||
return res.?;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn nodeGetNamespace(node: *Node) !?[]const u8 {
|
pub fn nodeGetNamespace(node: *Node) !?[]const u8 {
|
||||||
|
|||||||
Reference in New Issue
Block a user