[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 =