[dart:zircon] Work around tonic bug with unbalanced typed data acquire and release.
Fix missing return in invalid vmo writes.
Change-Id: I5849bcafe935f3db289e85a625bebf11f3c86291
diff --git a/public/dart-pkg/zircon/sdk_ext/system.cc b/public/dart-pkg/zircon/sdk_ext/system.cc
index efa0297..961b3e7 100644
--- a/public/dart-pkg/zircon/sdk_ext/system.cc
+++ b/public/dart-pkg/zircon/sdk_ext/system.cc
@@ -218,6 +218,7 @@
const tonic::DartByteData& data,
std::vector<Handle*> handles) {
if (!channel || !channel->is_valid()) {
+ data.Release();
return ZX_ERR_BAD_HANDLE;
}
@@ -234,6 +235,7 @@
handle->ReleaseHandle();
}
+ data.Release();
return status;
}
@@ -387,7 +389,7 @@
const tonic::DartByteData& data) {
if (!vmo || !vmo->is_valid()) {
data.Release();
- ZX_ERR_BAD_HANDLE;
+ return ZX_ERR_BAD_HANDLE;
}
zx_status_t status =