From e60e1266e9c13b8d3d3a8e4715e28141bd9dc096 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Wed, 8 Jan 2025 14:15:52 +0100 Subject: [PATCH] [DOM] Slightly extend lifetime of data in Structured Clone operations. --- dom/base/StructuredCloneHolder.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom/base/StructuredCloneHolder.cpp b/dom/base/StructuredCloneHolder.cpp index 71eab63138..a7afd310cb 100644 --- a/dom/base/StructuredCloneHolder.cpp +++ b/dom/base/StructuredCloneHolder.cpp @@ -1343,7 +1343,6 @@ StructuredCloneHolder::CustomReadTransferHandler(JSContext* aCx, static_cast(aContent); nsCOMPtr parent = do_QueryInterface(mParent); RefPtr canvas = OffscreenCanvas::CreateFromCloneData(parent, data); - delete data; JS::Rooted value(aCx); if (!GetOrCreateDOMReflector(aCx, canvas, &value)) { @@ -1351,6 +1350,7 @@ StructuredCloneHolder::CustomReadTransferHandler(JSContext* aCx, return false; } + delete data; aReturnObject.set(&value.toObject()); return true; } @@ -1363,7 +1363,6 @@ StructuredCloneHolder::CustomReadTransferHandler(JSContext* aCx, static_cast(aContent); nsCOMPtr parent = do_QueryInterface(mParent); RefPtr bitmap = ImageBitmap::CreateFromCloneData(parent, data); - delete data; JS::Rooted value(aCx); if (!GetOrCreateDOMReflector(aCx, bitmap, &value)) { @@ -1371,6 +1370,7 @@ StructuredCloneHolder::CustomReadTransferHandler(JSContext* aCx, return false; } + delete data; aReturnObject.set(&value.toObject()); return true; }