pixelsearch Posted April 5, 2021 Share Posted April 5, 2021 Hi everybody The 1st script below would generate a fatal error after the function calls itself 3799 times (on my computer) aaa() Func aaa() ... If ... Then aaa() ; recursion limit reached if 3799 times True EndFunc ;==>aaa "Recursion level has been exceeded - AutoIt will quit to prevent stack overflow" The 2nd script below allows to bypass this limit. Is it a recommended way to avoid a possible recursion issue ? aaa() Func aaa() While 1 ... If ... Then ContinueLoop ; 3799 times isn't a limit anymore. ExitLoop Wend EndFunc ;==>aaa Thanks Link to comment Share on other sites More sharing options...
Danp2 Posted April 5, 2021 Share Posted April 5, 2021 Makes sense to me. You could also eliminate the ContinueLoop and just do this -- If ... Then ExitLoop Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted April 5, 2021 Moderators Share Posted April 5, 2021 pixelsearch, The recursion problem is caused by the requirement to put lots of data on the stack when a function is called - recalling the same function again and again means that the stack rapidly gets filled and AutoIt will quit to prevent an overflow. In your second snippet I cannot see any recursive calls to function aaa(), so there should not be any stack filling and so no recursion problem. Have you read the Recursion tutorial in the Wiki? It has examples of both good and bad practice to test. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
pixelsearch Posted April 5, 2021 Author Share Posted April 5, 2021 Thanks Danp2 & Melba23 for your comments. 1 hour ago, Melba23 said: Have you read the Recursion tutorial in the Wiki? Gonna read it right now, thanks for the link Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now