From c0aa792db8b4a5aa1ede41d912e2568c7e76cf24 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 8 Oct 2009 11:29:01 +0400 Subject: [PATCH] recursion guard in WrappingConverter --- .../src/com/intellij/util/xml/WrappingConverter.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/xml/dom-openapi/src/com/intellij/util/xml/WrappingConverter.java b/xml/dom-openapi/src/com/intellij/util/xml/WrappingConverter.java index d6b71ebc2917..eb037818e8d9 100644 --- a/xml/dom-openapi/src/com/intellij/util/xml/WrappingConverter.java +++ b/xml/dom-openapi/src/com/intellij/util/xml/WrappingConverter.java @@ -63,9 +63,15 @@ public abstract class WrappingConverter extends Converter { public static Converter getDeepestConverter(final Converter converter, final GenericDomValue domValue) { Converter cur = converter; - for (Converter next; cur instanceof WrappingConverter; cur = next) { + Converter next; + int guard = 0; + while (cur instanceof WrappingConverter) { next = ((WrappingConverter)cur).getConverter(domValue); if (next == null) break; + cur = next; + if (guard++ > 10) { + throw new RuntimeException("Too deep wrapping for " + converter); + } } return cur; }