diff --git a/gfx/src/FilterSupport.cpp b/gfx/src/FilterSupport.cpp index ed7072e1c0f..715e9a0df0b 100644 --- a/gfx/src/FilterSupport.cpp +++ b/gfx/src/FilterSupport.cpp @@ -310,6 +310,13 @@ FilterCachedColorModels::FilterCachedColorModels(DrawTarget* aDT, already_AddRefed FilterCachedColorModels::ForColorModel(ColorModel aColorModel) { + if (aColorModel == mOriginalColorModel) { + // Make sure to not call WrapForColorModel if our original filter node was + // null, because then we'd get an infinite recursion. + RefPtr filter = mFilterForColorModel[mOriginalColorModel.ToIndex()]; + return filter.forget(); + } + if (!mFilterForColorModel[aColorModel.ToIndex()]) { mFilterForColorModel[aColorModel.ToIndex()] = WrapForColorModel(aColorModel); }