From d91dbbd460bbf6c2bbb310d80317ad494a328ead Mon Sep 17 00:00:00 2001 From: "Hedden, Kyle Matthew" Date: Fri, 26 Jan 2024 14:03:01 -0500 Subject: [PATCH 1/2] Prevent stack overflow if the logging handler is its own delegate. --- MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift b/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift index 42b4754..9db4039 100644 --- a/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift +++ b/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift @@ -36,6 +36,8 @@ import Foundation @objc(addErrorToLog:) open func addError(toLog errorObject: MVMCoreErrorObject) { - MVMCoreObject.sharedInstance()?.loggingDelegate?.addError(toLog: errorObject) + // Guard against doing anything further if the logging handler is its own delegate. + guard let loggingDelegate = MVMCoreObject.sharedInstance()?.loggingDelegate, loggingDelegate as? NSObject !== self else { return } + loggingDelegate.addError(toLog: errorObject) } } From 435b5a4c9759530e6676787bc3d3e62c29d67fc5 Mon Sep 17 00:00:00 2001 From: "Hedden, Kyle Matthew" Date: Fri, 26 Jan 2024 16:12:17 -0500 Subject: [PATCH 2/2] Scott recommendation to simplify. --- MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift b/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift index 9db4039..7ddadbb 100644 --- a/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift +++ b/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.swift @@ -36,8 +36,6 @@ import Foundation @objc(addErrorToLog:) open func addError(toLog errorObject: MVMCoreErrorObject) { - // Guard against doing anything further if the logging handler is its own delegate. - guard let loggingDelegate = MVMCoreObject.sharedInstance()?.loggingDelegate, loggingDelegate as? NSObject !== self else { return } - loggingDelegate.addError(toLog: errorObject) + // Subclass to handle. } }