Add fuzzer for Triangulating Path Renderer

Bug: skia:11892
Change-Id: I3f8145516f8fd23eb05c29517cd5c1553c9b1df1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/399296
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/ops/GrTriangulatingPathRenderer.cpp b/src/gpu/ops/GrTriangulatingPathRenderer.cpp
index 54cc75b..85f7ad1 100644
--- a/src/gpu/ops/GrTriangulatingPathRenderer.cpp
+++ b/src/gpu/ops/GrTriangulatingPathRenderer.cpp
@@ -158,53 +158,37 @@
     size_t fLockStride = 0;
 };
 
-class CpuVertexAllocator : public GrEagerVertexAllocator {
-public:
-    CpuVertexAllocator() = default;
-
-#ifdef SK_DEBUG
-    ~CpuVertexAllocator() override {
-        SkASSERT(!fLockStride && !fVertices && !fVertexData);
-    }
-#endif
-
-    void* lock(size_t stride, int eagerCount) override {
-        SkASSERT(!fLockStride && !fVertices && !fVertexData);
-        SkASSERT(stride && eagerCount);
-
-        fVertices = sk_malloc_throw(eagerCount * stride);
-        fLockStride = stride;
-
-        return fVertices;
-    }
-
-    void unlock(int actualCount) override {
-        SkASSERT(fLockStride && fVertices && !fVertexData);
-
-        fVertices = sk_realloc_throw(fVertices, actualCount * fLockStride);
-
-        fVertexData = GrThreadSafeCache::MakeVertexData(fVertices, actualCount, fLockStride);
-
-        fVertices = nullptr;
-        fLockStride = 0;
-    }
-
-    sk_sp<GrThreadSafeCache::VertexData> detachVertexData() {
-        SkASSERT(!fLockStride && !fVertices && fVertexData);
-
-        return std::move(fVertexData);
-    }
-
-private:
-    sk_sp<GrThreadSafeCache::VertexData> fVertexData;
-
-    void*  fVertices = nullptr;
-    size_t fLockStride = 0;
-};
-
 }  // namespace
 
+//-------------------------------------------------------------------------------------------------
+void* GrCpuVertexAllocator::lock(size_t stride, int eagerCount) {
+    SkASSERT(!fLockStride && !fVertices && !fVertexData);
+    SkASSERT(stride && eagerCount);
 
+    fVertices = sk_malloc_throw(eagerCount * stride);
+    fLockStride = stride;
+
+    return fVertices;
+}
+
+void GrCpuVertexAllocator::unlock(int actualCount) {
+    SkASSERT(fLockStride && fVertices && !fVertexData);
+
+    fVertices = sk_realloc_throw(fVertices, actualCount * fLockStride);
+
+    fVertexData = GrThreadSafeCache::MakeVertexData(fVertices, actualCount, fLockStride);
+
+    fVertices = nullptr;
+    fLockStride = 0;
+}
+
+sk_sp<GrThreadSafeCache::VertexData> GrCpuVertexAllocator::detachVertexData() {
+    SkASSERT(!fLockStride && !fVertices && fVertexData);
+
+    return std::move(fVertexData);
+}
+
+//-------------------------------------------------------------------------------------------------
 GrTriangulatingPathRenderer::GrTriangulatingPathRenderer()
   : fMaxVerbCount(GR_AA_TESSELLATOR_MAX_VERB_COUNT) {
 }
@@ -536,7 +520,7 @@
             return;
         }
 
-        CpuVertexAllocator allocator;
+        GrCpuVertexAllocator allocator;
 
         bool isLinear;
         int vertexCount = Triangulate(&allocator, fViewMatrix, fShape, fDevClipBounds, tol,