From d3f5015c3a1f374861bec99206419b2f2dcfbf4e Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Tue, 7 Jan 2025 11:27:24 +0100 Subject: [PATCH] xml_node.h: construct from Const_byte_range_ptr This patch allows for the construction of 'Xml_node' objects from a 'Const_byte_range_ptr' argument as a safer alternative to the pair of addr, max_len arguments. Issue #5411 --- repos/base/include/util/xml_node.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/repos/base/include/util/xml_node.h b/repos/base/include/util/xml_node.h index d94f709102..466654ceb0 100644 --- a/repos/base/include/util/xml_node.h +++ b/repos/base/include/util/xml_node.h @@ -576,7 +576,7 @@ class Genode::Xml_node start(skip_non_tag_characters(Token(addr, max_len))), end(_search_end_tag(start, num_sub_nodes)) { } - } _tags; + } _tags { _addr, _max_len }; /** * Return true if specified buffer contains a valid XML node @@ -628,14 +628,19 @@ class Genode::Xml_node * * \throw Invalid_syntax */ - Xml_node(char const *addr, size_t max_len = ~0UL) + Xml_node(Const_byte_range_ptr const &bytes) : - _addr(addr), _max_len(max_len), _tags(addr, max_len) + _addr(bytes.start), _max_len(bytes.num_bytes) { if (!_valid(_tags)) throw Invalid_syntax(); } + Xml_node(char const *addr, size_t max_len = ~0UL) + : + Xml_node(Const_byte_range_ptr { addr, max_len }) + { } + /** * Return size of node including start and end tags in bytes */