diff --git a/src/dawn/native/Surface.cpp b/src/dawn/native/Surface.cpp
index 7e5f268..811fec7 100644
--- a/src/dawn/native/Surface.cpp
+++ b/src/dawn/native/Surface.cpp
@@ -523,12 +523,12 @@
         [&capabilities](const PhysicalDeviceSurfaceCapabilities& caps) -> MaybeError {
             capabilities->nextInChain = nullptr;
             capabilities->usages = caps.usages;
-            DAWN_TRY(utils::AllocateApiSeqFromStdVector(capabilities->formats,
-                                                        capabilities->formatCount, caps.formats));
-            DAWN_TRY(utils::AllocateApiSeqFromStdVector(
-                capabilities->presentModes, capabilities->presentModeCount, caps.presentModes));
-            DAWN_TRY(utils::AllocateApiSeqFromStdVector(
-                capabilities->alphaModes, capabilities->alphaModeCount, caps.alphaModes));
+            utils::AllocateApiSeqFromStdVector(&capabilities->formats, &capabilities->formatCount,
+                                               caps.formats);
+            utils::AllocateApiSeqFromStdVector(&capabilities->presentModes,
+                                               &capabilities->presentModeCount, caps.presentModes);
+            utils::AllocateApiSeqFromStdVector(&capabilities->alphaModes,
+                                               &capabilities->alphaModeCount, caps.alphaModes);
             return {};
         }));
 
@@ -536,9 +536,9 @@
 }
 
 void APISurfaceCapabilitiesFreeMembers(WGPUSurfaceCapabilities capabilities) {
-    utils::FreeApiSeq(capabilities.formats, capabilities.formatCount);
-    utils::FreeApiSeq(capabilities.presentModes, capabilities.presentModeCount);
-    utils::FreeApiSeq(capabilities.alphaModes, capabilities.alphaModeCount);
+    utils::FreeApiSeq(&capabilities.formats, &capabilities.formatCount);
+    utils::FreeApiSeq(&capabilities.presentModes, &capabilities.presentModeCount);
+    utils::FreeApiSeq(&capabilities.alphaModes, &capabilities.alphaModeCount);
 }
 
 MaybeError Surface::GetCurrentTexture(SurfaceTexture* surfaceTexture) const {
diff --git a/src/dawn/native/utils/WGPUHelpers.h b/src/dawn/native/utils/WGPUHelpers.h
index ae18e3f..c501fd7 100644
--- a/src/dawn/native/utils/WGPUHelpers.h
+++ b/src/dawn/native/utils/WGPUHelpers.h
@@ -146,26 +146,25 @@
 // Given a std vector, allocate an equivalent array that can be returned in an API's foos/fooCount
 // pair of fields. The apiData must eventually be freed using FreeApiSeq.
 template <typename T>
-inline MaybeError AllocateApiSeqFromStdVector(const T*& apiData,
-                                              size_t& apiSize,
-                                              const std::vector<T>& vector) {
-    apiSize = vector.size();
-    if (apiSize > 0) {
-        T* mutableData = new T[apiSize];
-        memcpy(mutableData, vector.data(), apiSize * sizeof(T));
-        apiData = mutableData;
+void AllocateApiSeqFromStdVector(const T** apiData, size_t* apiSize, const std::vector<T>& vector) {
+    size_t size = vector.size();
+    *apiSize = size;
+
+    if (size > 0) {
+        T* mutableData = new T[size];
+        memcpy(mutableData, vector.data(), size * sizeof(T));
+        *apiData = mutableData;
     } else {
-        apiData = nullptr;
+        *apiData = nullptr;
     }
-    return {};
 }
 
 // Free an API sequence that was allocated by AllocateApiSeqFromStdVector
 template <typename T>
-inline void FreeApiSeq(T*& apiData, size_t& apiSize) {
-    delete[] apiData;
-    apiData = nullptr;
-    apiSize = 0;
+void FreeApiSeq(T** apiData, size_t* apiSize) {
+    delete[] *apiData;
+    *apiData = nullptr;
+    *apiSize = 0;
 }
 
 }  // namespace dawn::native::utils
