diff --git a/dom/canvas/CanvasRenderingContext2D.cpp b/dom/canvas/CanvasRenderingContext2D.cpp index 300ff8228a1..6fcff487091 100644 --- a/dom/canvas/CanvasRenderingContext2D.cpp +++ b/dom/canvas/CanvasRenderingContext2D.cpp @@ -4622,6 +4622,7 @@ CanvasPath::AddPath(CanvasPath& aCanvasPath, const Optional>& } } + EnsurePathBuilder(); // in case a path is added to itself tempPath->StreamToSink(mPathBuilder); } diff --git a/dom/canvas/test/test_canvas_path.html b/dom/canvas/test/test_canvas_path.html index 2a4ad2b8f5f..2e3fd3bf52d 100644 --- a/dom/canvas/test/test_canvas_path.html +++ b/dom/canvas/test/test_canvas_path.html @@ -378,6 +378,8 @@ function test_addpath_canvas() { shouldThrow(ctx, "p5.addPath(null, m)"); shouldThrow(ctx, "p5.addPath([], m)"); shouldThrow(ctx, "p5.addPath({}, m)"); + + p5 = p5.addPath(p5); }