https://bugs.webkit.org/show_bug.cgi?id=68816
<rdar://problem/
10186468>
Reviewed by Simon Fraser.
If a filter returns without writing into its result buffer, make sure to return an cleared buffer.
Test: svg/filters/feMorphology-zero-radius.svg
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@96151
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-09-27 Tim Horton <timothy_horton@apple.com>
+
+ Rapidly refreshing a feMorphology[erode] with r=0 can sometimes cause display corruption
+ https://bugs.webkit.org/show_bug.cgi?id=68816
+ <rdar://problem/10186468>
+
+ Reviewed by Simon Fraser.
+
+ Add a test which ensures that a zero-radius feMorphology filter returns cleared memory.
+
+ * svg/filters/feMorphology-zero-radius-expected.png: Added.
+ * svg/filters/feMorphology-zero-radius-expected.txt: Added.
+ * svg/filters/feMorphology-zero-radius.svg: Added.
+
2011-09-27 David Hyatt <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=68922
--- /dev/null
+<svg id="svg" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
+<title>The entire image should be white.</title>
+<defs>
+ <filter id="morph">
+ <feMorphology operator="erode" radius="0"/>
+ </filter>
+</defs>
+<script>
+ <![CDATA[
+ for(var i = 0; i < 100; i+=5)
+ {
+ for(var j = 0; j < 100; j+=5)
+ {
+ var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+ rect.setAttribute("x", i);
+ rect.setAttribute("y", j);
+ rect.setAttribute("width", "5");
+ rect.setAttribute("height", "5");
+ rect.setAttribute("filter", "url(#morph)");
+
+ document.getElementById("svg").appendChild(rect);
+ }
+ }
+
+ if (window.layoutTestController)
+ window.layoutTestController.dumpAsText();
+ ]]>
+</script>
+
+</svg>
+2011-09-27 Tim Horton <timothy_horton@apple.com>
+
+ Rapidly refreshing a feMorphology[erode] with r=0 can sometimes cause display corruption
+ https://bugs.webkit.org/show_bug.cgi?id=68816
+ <rdar://problem/10186468>
+
+ Reviewed by Simon Fraser.
+
+ Add ByteArray::clear, which zeros the memory in the ByteArray.
+
+ * wtf/ByteArray.h:
+ (WTF::ByteArray::clear): Added.
+
2011-09-27 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r96131.
unsigned char* data() { return m_data; }
+ void clear() { memset(m_data, 0, m_size); }
+
void deref()
{
if (derefBase()) {
+2011-09-27 Tim Horton <timothy_horton@apple.com>
+
+ Rapidly refreshing a feMorphology[erode] with r=0 can sometimes cause display corruption
+ https://bugs.webkit.org/show_bug.cgi?id=68816
+ <rdar://problem/10186468>
+
+ Reviewed by Simon Fraser.
+
+ If a filter returns without writing into its result buffer, make sure to return an cleared buffer.
+
+ Test: svg/filters/feMorphology-zero-radius.svg
+
+ * platform/graphics/filters/FEMorphology.cpp:
+ (WebCore::FEMorphology::apply):
+ * platform/graphics/filters/FETurbulence.cpp:
+ (WebCore::FETurbulence::apply):
+
2011-09-27 Ryosuke Niwa <rniwa@webkit.org>
CompositeEditCommand::prune should remove subtree at once
return;
setIsAlphaImage(in->isAlphaImage());
- if (m_radiusX <= 0 || m_radiusY <= 0)
+ if (m_radiusX <= 0 || m_radiusY <= 0) {
+ dstPixelArray->clear();
return;
+ }
Filter* filter = this->filter();
int radiusX = static_cast<int>(floorf(filter->applyHorizontalScale(m_radiusX)));
if (!pixelArray)
return;
- if (absolutePaintRect().isEmpty())
+ if (absolutePaintRect().isEmpty()) {
+ pixelArray->clear();
return;
+ }
PaintingData paintingData(m_seed, roundedIntSize(filterPrimitiveSubregion().size()));
initPaint(paintingData);