[dawn] Replace a few new[] with HeapArray Bug: 512465980 Change-Id: Iddc8a366833679344175af414915a39e3088845b Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/302596 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Shrek Shao <shrekshao@google.com> Auto-Submit: Kai Ninomiya <kainino@chromium.org>
diff --git a/src/dawn/wire/client/LimitsAndFeatures.cpp b/src/dawn/wire/client/LimitsAndFeatures.cpp index 17b285c..97b888c 100644 --- a/src/dawn/wire/client/LimitsAndFeatures.cpp +++ b/src/dawn/wire/client/LimitsAndFeatures.cpp
@@ -30,6 +30,7 @@ #include "src/dawn/wire/SupportedFeatures.h" #include "src/utils/assert.h" #include "src/utils/compiler.h" +#include "src/utils/heap_array.h" namespace dawn::wire::client { @@ -75,22 +76,9 @@ return; } - const size_t count = mFeatures.size(); - supportedFeatures->featureCount = count; - supportedFeatures->features = nullptr; - - if (count == 0) { - return; - } - // This will be freed by wgpuSupportedFeaturesFreeMembers. - WGPUFeatureName* features = new WGPUFeatureName[count]; - uint32_t index = 0; - for (WGPUFeatureName f : mFeatures) { - DAWN_UNSAFE_TODO(features[index++]) = f; - } - DAWN_ASSERT(index == count); - supportedFeatures->features = features; + std::tie(supportedFeatures->featureCount, supportedFeatures->features) = + HeapArrayFrom(mFeatures).MoveToRawPointer(); } void LimitsAndFeatures::SetLimits(const WGPULimits* limits) {
diff --git a/src/dawn/wire/client/Surface.cpp b/src/dawn/wire/client/Surface.cpp index cc4b5b3..6603caf 100644 --- a/src/dawn/wire/client/Surface.cpp +++ b/src/dawn/wire/client/Surface.cpp
@@ -115,20 +115,13 @@ capabilities->nextInChain = nullptr; capabilities->usages = mSupportedUsages; - capabilities->presentModeCount = mSupportedPresentModes.size(); - WGPUPresentMode* presentModes = new WGPUPresentMode[capabilities->presentModeCount]; - std::copy(mSupportedPresentModes.begin(), mSupportedPresentModes.end(), presentModes); - capabilities->presentModes = presentModes; - - capabilities->formatCount = mSupportedFormats.size(); - WGPUTextureFormat* formats = new WGPUTextureFormat[capabilities->formatCount]; - std::copy(mSupportedFormats.begin(), mSupportedFormats.end(), formats); - capabilities->formats = formats; - - capabilities->alphaModeCount = mSupportedAlphaModes.size(); - WGPUCompositeAlphaMode* alphaModes = new WGPUCompositeAlphaMode[capabilities->alphaModeCount]; - std::copy(mSupportedAlphaModes.begin(), mSupportedAlphaModes.end(), alphaModes); - capabilities->alphaModes = alphaModes; + // These will be freed by APIFreeMembers. + std::tie(capabilities->presentModeCount, capabilities->presentModes) = + HeapArrayFrom(mSupportedPresentModes).MoveToRawPointer(); + std::tie(capabilities->formatCount, capabilities->formats) = + HeapArrayFrom(mSupportedFormats).MoveToRawPointer(); + std::tie(capabilities->alphaModeCount, capabilities->alphaModes) = + HeapArrayFrom(mSupportedAlphaModes).MoveToRawPointer(); return WGPUStatus_Success; }
diff --git a/src/dawn/wire/server/ServerQueue.cpp b/src/dawn/wire/server/ServerQueue.cpp index 42d0ca3..7f8286a 100644 --- a/src/dawn/wire/server/ServerQueue.cpp +++ b/src/dawn/wire/server/ServerQueue.cpp
@@ -31,6 +31,7 @@ #include "src/dawn/wire/server/Server.h" #include "src/utils/assert.h" +#include "src/utils/heap_array.h" namespace dawn::wire::server {