Date: Sat, 26 May 2018 00:54:26 +0000 (UTC) From: Jan Beich <jbeich@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org Subject: svn commit: r470878 - in branches/2018Q2/www/waterfox: . files Message-ID: <201805260054.w4Q0sQOe004621@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jbeich Date: Sat May 26 00:54:26 2018 New Revision: 470878 URL: https://svnweb.freebsd.org/changeset/ports/470878 Log: MFH: r470877 www/waterfox: apply some FF61 fixes Approved by: ports-secteam blanket Added: branches/2018Q2/www/waterfox/files/patch-bug1462682 - copied unchanged from r470877, head/www/waterfox/files/patch-bug1462682 branches/2018Q2/www/waterfox/files/patch-bug1463244 - copied unchanged from r470877, head/www/waterfox/files/patch-bug1463244 Modified: branches/2018Q2/www/waterfox/Makefile Directory Properties: branches/2018Q2/ (props changed) Modified: branches/2018Q2/www/waterfox/Makefile ============================================================================== --- branches/2018Q2/www/waterfox/Makefile Sat May 26 00:53:50 2018 (r470877) +++ branches/2018Q2/www/waterfox/Makefile Sat May 26 00:54:26 2018 (r470878) @@ -3,7 +3,7 @@ PORTNAME= waterfox DISTVERSION= 56.2.0-13 DISTVERSIONSUFFIX= -gd2cdd42f4115b -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= www ipv6 MAINTAINER= jbeich@FreeBSD.org Copied: branches/2018Q2/www/waterfox/files/patch-bug1462682 (from r470877, head/www/waterfox/files/patch-bug1462682) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2018Q2/www/waterfox/files/patch-bug1462682 Sat May 26 00:54:26 2018 (r470878, copy of r470877, head/www/waterfox/files/patch-bug1462682) @@ -0,0 +1,32 @@ +commit dc5382e1b765 +Author: Lee Salzman <lsalzman@mozilla.com> +Date: Fri May 25 00:57:45 2018 -0400 + + Bug 1462682 - Skia path bounds rounding fix. r=rhunt, a=RyanVM + + MozReview-Commit-ID: Lm0XhyLLCCV + + --HG-- + extra : source : 784deba1907770c8f4c3482509ae99d474c4439f +--- + gfx/skia/skia/src/core/SkScan_Path.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git gfx/skia/skia/src/core/SkScan_Path.cpp gfx/skia/skia/src/core/SkScan_Path.cpp +index 2373e62d46ff2..90a22305260f1 100644 +--- gfx/skia/skia/src/core/SkScan_Path.cpp ++++ gfx/skia/skia/src/core/SkScan_Path.cpp +@@ -564,7 +564,12 @@ static bool clip_to_limit(const SkRegion& orig, SkRegion* reduced) { + // Bias used for conservative rounding of float rects to int rects, to nudge the irects a little + // larger, so we don't "think" a path's bounds are inside a clip, when (due to numeric drift in + // the scan-converter) we might walk beyond the predicted limits. +-static const double kConservativeRoundBias = 0.5 + 0.5 / SK_FDot6One; ++// ++// This value has been determined trial and error: pick the smallest value (after the 0.5) that ++// fixes any problematic cases (e.g. crbug.com/844457) ++// NOTE: cubics appear to be the main reason for needing this slop. If we could (perhaps) have a ++// more accurate walker for cubics, we may be able to reduce this fudge factor. ++static const double kConservativeRoundBias = 0.5 + 1.5 / SK_FDot6One; + + /** + * Round the value down. This is used to round the top and left of a rectangle, Copied: branches/2018Q2/www/waterfox/files/patch-bug1463244 (from r470877, head/www/waterfox/files/patch-bug1463244) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2018Q2/www/waterfox/files/patch-bug1463244 Sat May 26 00:54:26 2018 (r470878, copy of r470877, head/www/waterfox/files/patch-bug1463244) @@ -0,0 +1,161 @@ +commit 937a30033acb +Author: Lee Salzman <lsalzman@mozilla.com> +Date: Fri May 25 00:56:22 2018 -0400 + + Bug 1463244 - Cleanup of swizzle stride calculations. r=rhunt, a=RyanVM + + MozReview-Commit-ID: GMXRKnu8zHB + + --HG-- + extra : source : 2aaf8f2a1975c57f5467968734d110ac7becc7ee +--- + gfx/2d/DataSurfaceHelpers.cpp | 33 ++++++++++++++++++++++++--------- + gfx/2d/Swizzle.cpp | 34 +++++++++++++++++++++++++++------- + 2 files changed, 51 insertions(+), 16 deletions(-) + +diff --git gfx/2d/DataSurfaceHelpers.cpp gfx/2d/DataSurfaceHelpers.cpp +index f13be059c8ba0..7af32ff005771 100644 +--- gfx/2d/DataSurfaceHelpers.cpp ++++ gfx/2d/DataSurfaceHelpers.cpp +@@ -157,9 +157,16 @@ SurfaceToPackedBGRA(DataSourceSurface *aSurface) + } + + IntSize size = aSurface->GetSize(); +- +- UniquePtr<uint8_t[]> imageBuffer( +- new (std::nothrow) uint8_t[size.width * size.height * sizeof(uint32_t)]); ++ if (size.width < 0 || size.width >= INT32_MAX / 4) { ++ return nullptr; ++ } ++ int32_t stride = size.width * 4; ++ CheckedInt<size_t> bufferSize = ++ CheckedInt<size_t>(stride) * CheckedInt<size_t>(size.height); ++ if (!bufferSize.isValid()) { ++ return nullptr; ++ } ++ UniquePtr<uint8_t[]> imageBuffer(new (std::nothrow) uint8_t[bufferSize.value()]); + if (!imageBuffer) { + return nullptr; + } +@@ -170,14 +177,14 @@ SurfaceToPackedBGRA(DataSourceSurface *aSurface) + } + + CopySurfaceDataToPackedArray(map.mData, imageBuffer.get(), size, +- map.mStride, 4 * sizeof(uint8_t)); ++ map.mStride, 4); + + aSurface->Unmap(); + + if (format == SurfaceFormat::B8G8R8X8) { + // Convert BGRX to BGRA by setting a to 255. +- SwizzleData(imageBuffer.get(), size.width * sizeof(uint32_t), SurfaceFormat::X8R8G8B8_UINT32, +- imageBuffer.get(), size.width * sizeof(uint32_t), SurfaceFormat::A8R8G8B8_UINT32, ++ SwizzleData(imageBuffer.get(), stride, SurfaceFormat::X8R8G8B8_UINT32, ++ imageBuffer.get(), stride, SurfaceFormat::A8R8G8B8_UINT32, + size); + } + +@@ -196,8 +203,16 @@ SurfaceToPackedBGR(DataSourceSurface *aSurface) + } + + IntSize size = aSurface->GetSize(); +- +- uint8_t* imageBuffer = new (std::nothrow) uint8_t[size.width * size.height * 3 * sizeof(uint8_t)]; ++ if (size.width < 0 || size.width >= INT32_MAX / 3) { ++ return nullptr; ++ } ++ int32_t stride = size.width * 3; ++ CheckedInt<size_t> bufferSize = ++ CheckedInt<size_t>(stride) * CheckedInt<size_t>(size.height); ++ if (!bufferSize.isValid()) { ++ return nullptr; ++ } ++ uint8_t* imageBuffer = new (std::nothrow) uint8_t[bufferSize.value()]; + if (!imageBuffer) { + return nullptr; + } +@@ -209,7 +224,7 @@ SurfaceToPackedBGR(DataSourceSurface *aSurface) + } + + SwizzleData(map.mData, map.mStride, SurfaceFormat::B8G8R8X8, +- imageBuffer, size.width * 3, SurfaceFormat::B8G8R8, ++ imageBuffer, stride, SurfaceFormat::B8G8R8, + size); + + aSurface->Unmap(); +diff --git gfx/2d/Swizzle.cpp gfx/2d/Swizzle.cpp +index 99bd1e17662c4..acbe2cabf9819 100644 +--- gfx/2d/Swizzle.cpp ++++ gfx/2d/Swizzle.cpp +@@ -259,7 +259,8 @@ static inline IntSize + CollapseSize(const IntSize& aSize, int32_t aSrcStride, int32_t aDstStride) + { + if (aSrcStride == aDstStride && +- aSrcStride == 4 * aSize.width) { ++ (aSrcStride & 3) == 0 && ++ aSrcStride / 4 == aSize.width) { + CheckedInt32 area = CheckedInt32(aSize.width) * CheckedInt32(aSize.height); + if (area.isValid()) { + return IntSize(area.value(), 1); +@@ -268,6 +269,16 @@ CollapseSize(const IntSize& aSize, int32_t aSrcStride, int32_t aDstStride) + return aSize; + } + ++static inline int32_t ++GetStrideGap(int32_t aWidth, SurfaceFormat aFormat, int32_t aStride) ++{ ++ CheckedInt32 used = CheckedInt32(aWidth) * BytesPerPixel(aFormat); ++ if (!used.isValid() || used.value() < 0) { ++ return -1; ++ } ++ return aStride - used.value(); ++} ++ + bool + PremultiplyData(const uint8_t* aSrc, int32_t aSrcStride, SurfaceFormat aSrcFormat, + uint8_t* aDst, int32_t aDstStride, SurfaceFormat aDstFormat, +@@ -278,9 +289,12 @@ PremultiplyData(const uint8_t* aSrc, int32_t aSrcStride, SurfaceFormat aSrcForma + } + IntSize size = CollapseSize(aSize, aSrcStride, aDstStride); + // Find gap from end of row to the start of the next row. +- int32_t srcGap = aSrcStride - BytesPerPixel(aSrcFormat) * aSize.width; +- int32_t dstGap = aDstStride - BytesPerPixel(aDstFormat) * aSize.width; ++ int32_t srcGap = GetStrideGap(aSize.width, aSrcFormat, aSrcStride); ++ int32_t dstGap = GetStrideGap(aSize.width, aDstFormat, aDstStride); + MOZ_ASSERT(srcGap >= 0 && dstGap >= 0); ++ if (srcGap < 0 || dstGap < 0) { ++ return false; ++ } + + #define FORMAT_CASE_CALL(...) __VA_ARGS__(aSrc, srcGap, aDst, dstGap, size) + +@@ -404,9 +418,12 @@ UnpremultiplyData(const uint8_t* aSrc, int32_t aSrcStride, SurfaceFormat aSrcFor + } + IntSize size = CollapseSize(aSize, aSrcStride, aDstStride); + // Find gap from end of row to the start of the next row. +- int32_t srcGap = aSrcStride - BytesPerPixel(aSrcFormat) * aSize.width; +- int32_t dstGap = aDstStride - BytesPerPixel(aDstFormat) * aSize.width; ++ int32_t srcGap = GetStrideGap(aSize.width, aSrcFormat, aSrcStride); ++ int32_t dstGap = GetStrideGap(aSize.width, aDstFormat, aDstStride); + MOZ_ASSERT(srcGap >= 0 && dstGap >= 0); ++ if (srcGap < 0 || dstGap < 0) { ++ return false; ++ } + + #define FORMAT_CASE_CALL(...) __VA_ARGS__(aSrc, srcGap, aDst, dstGap, size) + +@@ -702,9 +719,12 @@ SwizzleData(const uint8_t* aSrc, int32_t aSrcStride, SurfaceFormat aSrcFormat, + } + IntSize size = CollapseSize(aSize, aSrcStride, aDstStride); + // Find gap from end of row to the start of the next row. +- int32_t srcGap = aSrcStride - BytesPerPixel(aSrcFormat) * aSize.width; +- int32_t dstGap = aDstStride - BytesPerPixel(aDstFormat) * aSize.width; ++ int32_t srcGap = GetStrideGap(aSize.width, aSrcFormat, aSrcStride); ++ int32_t dstGap = GetStrideGap(aSize.width, aDstFormat, aDstStride); + MOZ_ASSERT(srcGap >= 0 && dstGap >= 0); ++ if (srcGap < 0 || dstGap < 0) { ++ return false; ++ } + + #define FORMAT_CASE_CALL(...) __VA_ARGS__(aSrc, srcGap, aDst, dstGap, size) +
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805260054.w4Q0sQOe004621>