Loop made from Custom Events incorrectly flagged as infinite loop.

It is actually not infinite loop. Blueprint recurse limit exception. Changing max inner loop index to small(10<) it works expected.

ScriptCore.cpp



DEFINE_FUNCTION(UObject::ProcessInternal)
{
...
        else if (++FBlueprintExceptionTracker::Get().Recurse == RECURSE_LIMIT)
        {
            // If we have a return property, return a zeroed value in it, to try and save execution as much as possible
            UProperty* ReturnProp = (Function)->GetReturnProperty();
            ClearReturnValue(ReturnProp, RESULT_PARAM);

            // Notify anyone who cares that we've had a fatal error, so we can shut down PIE, etc
            FBlueprintExceptionInfo InfiniteRecursionExceptionInfo(
                EBlueprintExceptionType::InfiniteLoop,
                FText::Format(
                    LOCTEXT("InfiniteLoop", "Infinite script recursion ({0} calls) detected - see log for stack trace"),
                    FText::AsNumber(RECURSE_LIMIT)
                )
            );

...



On PLATFORM_DESKTOP recurse limited to 250. I think every blueprint node’s recurse counted(250>), event thought IntArray 118.



#if !PLATFORM_DESKTOP
    #define RECURSE_LIMIT 120
#else
    #define RECURSE_LIMIT 250
#endif