| * Copyright 2018 Google Inc. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| #include "SkDashPathEffect.h" |
| // Repro case for skia:7674. Requires lots of RAM to run, and currently triggers UB: |
| // ../include/private/SkTDArray.h:382:26: |
| // runtime error: signed integer overflow: 2147483644 + 4 cannot be represented in type 'int' |
| DEF_SIMPLE_GM(PathMeasure_explosion, canvas, 500,500) { |
| float intervals[] = { 0, 10e9f }; |
| p.setStyle(SkPaint::kStroke_Style); |
| p.setPathEffect(SkDashPathEffect::Make(intervals, SK_ARRAY_COUNT(intervals), 0)); |
| 13, 68, 258, 1053, 1323, 2608, 10018, 15668, 59838, 557493, 696873, 871098, 4153813, |
| 15845608, 48357008, 118059138, 288230353, 360287948, 562949933, 703687423, 1099511613, 0 |
| int next_quadratic_at = 0; |
| for (int points = 1; points < 2147483647; ) { |
| if (points == quadratic_at[next_quadratic_at]) { |
| canvas->drawPath(path, p); |