blob: 5bdf511139871a6f02fe4d49ba9ce45f3aeb710c [file] [log] [blame] [edit]
/*
* Copyright 2026 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "include/core/SkBlurTypes.h"
#include "include/core/SkMaskFilter.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkPathBuilder.h"
#include "include/core/SkStrokeRec.h"
#include "src/core/SkDraw.h"
#include "src/core/SkMask.h"
#include "src/core/SkPathPriv.h"
#include "tests/Test.h"
#include <memory>
// b/476169487
DEF_TEST(DrawToMask_RejectsBigPath, reporter) {
SkPathBuilder pb;
pb.moveTo(2.44905932e-05f, 0.0625f);
pb.quadTo({2.44905932e-05f, -2.12843282e+38f}, {2.44905932e-05f, 0.0625f});
pb.lineTo(2.44905932e-05f, 0.0625f);
auto raw = SkPathPriv::Raw(pb, SkResolveConvexity::kNo);
REPORTER_ASSERT(reporter, raw.has_value());
SkIRect clip = {0, 0, 0, 0};
SkMaskBuilder dst;
auto filter = SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, 1.0f);
SkMatrix matrix = SkMatrix::I();
// This crashes without the fix
skcpu::DrawToMask(*raw,
clip,
filter.get(),
&matrix,
&dst,
SkMaskBuilder::kComputeBoundsAndRenderImage_CreateMode,
SkStrokeRec::kHairline_InitStyle);
SkAutoMaskFreeImage autoFree(dst.image());
}