From 185eded8d29f2a268940128a11cae69d71a9b781 Mon Sep 17 00:00:00 2001
From: andy <andy>
Date: Thu, 5 Sep 2013 12:11:15 +0100
Subject: [PATCH] ENH: doxygenXmlParser - replaced recursion

---
 .../doxygenXmlParser/doxygenXmlParser.C       | 28 ++++++++-----------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C
index ac9c639c497..b3cc2da3e63 100644
--- a/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C
+++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C
@@ -213,25 +213,21 @@ void Foam::doxygenXmlParser::skipForward
 ) const
 {
     // recurse to move forward in 'is' until come across <blockName>
-
-    // fast-forward until we reach a '<'
-    char c;
-    while (is.get(c) && c != '<')
-    {}
-    
     string entryName = "";
-    while (is.get(c) && c  != '>')
-    {
-        entryName = entryName + c;
-    }
+    char c;
 
-    if (entryName == blockName)
-    {
-        return;
-    }
-    else
+    while (is.good() && (entryName != blockName))
     {
-        skipForward(is, blockName);
+        entryName = "";
+
+        // fast-forward until we reach a '<'
+        while (is.get(c) && c != '<')
+        {}
+
+        while (is.get(c) && c  != '>')
+        {
+            entryName = entryName + c;
+        }
     }
 }
 
-- 
GitLab