From 940dc7fd8af9f46ca448c1e548b8f6d064a64290 Mon Sep 17 00:00:00 2001 From: Ronald Brill Date: Thu, 19 Jan 2023 16:41:37 +0100 Subject: [PATCH] remove recursion to make the fuzzer happy --- .../htmlunit/html/DomNode.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java b/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java index af213257ef5..503b9234185 100644 --- a/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java +++ b/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java @@ -1453,18 +1453,19 @@ private DomNode getNextElementUpwards(final DomNode startingNode) { if (startingNode == DomNode.this) { return null; } - final DomNode parent = startingNode.getParentNode(); - if (parent == null || parent == DomNode.this) { - return null; - } - DomNode next = parent.getNextSibling(); - while (next != null && !isAccepted(next)) { - next = next.getNextSibling(); - } - if (next == null) { - return getNextElementUpwards(parent); + + DomNode parent = startingNode.getParentNode(); + while (parent != null && parent != DomNode.this) { + DomNode next = parent.getNextSibling(); + while (next != null && !isAccepted(next)) { + next = next.getNextSibling(); + } + if (next != null) { + return next; + } + parent = parent.getParentNode(); } - return next; + return null; } private DomNode getFirstChildElement(final DomNode parent) { @@ -1763,7 +1764,8 @@ public void removeCharacterDataChangeListener(final CharacterDataChangeListener protected void fireCharacterDataChanged(final CharacterDataChangeEvent event) { DomNode toInform = this; while (toInform != null) { - final List listeners = safeGetCharacterDataListeners(); + + final List listeners = toInform.safeGetCharacterDataListeners(); if (listeners != null) { for (final CharacterDataChangeListener listener : listeners) { listener.characterDataChanged(event);