From 2d0c77469d3c399a0bbdbb9e43488a1c51aec951 Mon Sep 17 00:00:00 2001 From: Ben Olden-Cooligan Date: Sun, 10 Mar 2024 21:18:47 -0700 Subject: [PATCH] Prevent infinite recursion for self-referencing types --- NAPS2.Internals/Serialization/XmlSerializer.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NAPS2.Internals/Serialization/XmlSerializer.cs b/NAPS2.Internals/Serialization/XmlSerializer.cs index 47558d2ce..5149dbe80 100644 --- a/NAPS2.Internals/Serialization/XmlSerializer.cs +++ b/NAPS2.Internals/Serialization/XmlSerializer.cs @@ -241,6 +241,9 @@ public abstract class XmlSerializer if (typeInfo.CustomSerializer == null) { + // Prevent infinite recursion by populating the partial type info + // Cycles in type info are ok (e.g. Node.Parent is a Node), just not in the actual objects + TypeInfoCache[type] = typeInfo; var knownTypesFromPropertyTypes = props.SelectMany(x => GetTypeInfo(x.PropertyType).KnownTypesByElementName); var knownTypesFromActualType = GetKnownTypes(type);