dawn_wire: Fix leak in Server::DoDevicePopErrorScope
Also fixes a uint64_t -> uint32_t narrowing conversion.
Bug: chromium:1001045, dawn:153
Change-Id: I0f94d201884071325c7c5bb40a8c9c67c066e251
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/10980
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn_wire/server/Server.h b/src/dawn_wire/server/Server.h
index efbb467..5e9c8b6 100644
--- a/src/dawn_wire/server/Server.h
+++ b/src/dawn_wire/server/Server.h
@@ -36,7 +36,7 @@
Server* server;
// TODO(enga): ObjectHandle device;
// when the wire supports multiple devices.
- uint32_t requestSerial;
+ uint64_t requestSerial;
};
struct FenceCompletionUserdata {
diff --git a/src/dawn_wire/server/ServerDevice.cpp b/src/dawn_wire/server/ServerDevice.cpp
index 4e86d3e..8713b57 100644
--- a/src/dawn_wire/server/ServerDevice.cpp
+++ b/src/dawn_wire/server/ServerDevice.cpp
@@ -36,7 +36,11 @@
userdata->server = this;
userdata->requestSerial = requestSerial;
- return mProcs.devicePopErrorScope(cDevice, ForwardPopErrorScope, userdata);
+ bool success = mProcs.devicePopErrorScope(cDevice, ForwardPopErrorScope, userdata);
+ if (!success) {
+ delete userdata;
+ }
+ return success;
}
// static