aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/platform/build_target.py
diff options
context:
space:
mode:
authorKingsley Yung <kingsley@kkoyung.dev>2025-05-29 01:58:33 +0800
committerGitHub <noreply@github.com>2025-05-28 17:58:33 +0000
commitbe7efc94a384dff54556e461710d27661219dd62 (patch)
tree25a908f0a0ee7ec6a1191e0bbbb034203f61c01b /python/servo/platform/build_target.py
parent398764a928261632a498479ab40ab9f125817cd3 (diff)
downloadservo-be7efc94a384dff54556e461710d27661219dd62.tar.gz
servo-be7efc94a384dff54556e461710d27661219dd62.zip
Refactoring `HTMLOptionElement::Text` into iterative style (#37167)
The original implementation of `HTMLOptionElement::Text` is recursive, and the program may run out of stack space for a sufficiently large number of iterations. The patch switches to an iterative implementation, with `TreeIterator`. Note that, instead of the usual `while let Some(node) = iterator.next()` approach, we use `while let Some(node) = iterator.peek()` with the newly added `TreeIterator::peek` function. This is because the choice of the next node depends on some checks performed inside the `while` block, whereas the `next` function determines the next node before entering the block. Moreover, the `TreeIterator::peek` function is added, instead of wrapping the iterator into `Peekable`. This is because we will lose access to the `TreeIterator::next_skipping_children` function if we wrap it into `Peekable`. Testing: This refactoring has to pass the existing tests. Fixes: #36959 Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Diffstat (limited to 'python/servo/platform/build_target.py')
0 files changed, 0 insertions, 0 deletions