Bug 1240241 - Don't recurse infinitely in FilterCachedColorModels::ForColorModel if the original filter node was null. r?roc
--- a/gfx/src/FilterSupport.cpp
+++ b/gfx/src/FilterSupport.cpp
@@ -305,16 +305,23 @@ FilterCachedColorModels::FilterCachedCol
mFilterForColorModel[2] = clear;
mFilterForColorModel[3] = clear;
}
}
already_AddRefed<FilterNode>
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<FilterNode> filter = mFilterForColorModel[mOriginalColorModel.ToIndex()];
+ return filter.forget();
+ }
+
if (!mFilterForColorModel[aColorModel.ToIndex()]) {
mFilterForColorModel[aColorModel.ToIndex()] = WrapForColorModel(aColorModel);
}
RefPtr<FilterNode> filter(mFilterForColorModel[aColorModel.ToIndex()]);
return filter.forget();
}
already_AddRefed<FilterNode>