From 9a6c113030a2b15cfb15e005654bac1ceff60a52 Mon Sep 17 00:00:00 2001 From: Kenny Kerr Date: Mon, 19 Sep 2022 13:54:38 -0500 Subject: [PATCH] fixed-free --- crates/libs/bindgen/src/gen.rs | 28 +++++++++---------- crates/libs/metadata/src/reader/mod.rs | 5 ++++ .../mod.rs | 12 ++++---- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/crates/libs/bindgen/src/gen.rs b/crates/libs/bindgen/src/gen.rs index c9558ad3d5..5f50b97c48 100644 --- a/crates/libs/bindgen/src/gen.rs +++ b/crates/libs/bindgen/src/gen.rs @@ -940,22 +940,20 @@ impl<'a> Gen<'a> { let name = self.param_name(param.def); if let ArrayInfo::Fixed(fixed) = param.array_info { - if fixed > 0 && self.reader.param_free_with(param.def).is_none() { - let ty = param.ty.deref(); - let ty = self.type_default_name(&ty); - let len = Literal::u32_unsuffixed(fixed as _); - let ty = if self.reader.param_flags(param.def).output() { - quote! { &mut [#ty; #len] } - } else { - quote! { &[#ty; #len] } - }; - if self.reader.param_flags(param.def).optional() { - tokens.combine("e! { #name: ::core::option::Option<#ty>, }); - } else { - tokens.combine("e! { #name: #ty, }); - } - continue; + let ty = param.ty.deref(); + let ty = self.type_default_name(&ty); + let len = Literal::u32_unsuffixed(fixed as _); + let ty = if self.reader.param_flags(param.def).output() { + quote! { &mut [#ty; #len] } + } else { + quote! { &[#ty; #len] } + }; + if self.reader.param_flags(param.def).optional() { + tokens.combine("e! { #name: ::core::option::Option<#ty>, }); + } else { + tokens.combine("e! { #name: #ty, }); } + continue; } if let ArrayInfo::RelativeLen(_) = param.array_info { diff --git a/crates/libs/metadata/src/reader/mod.rs b/crates/libs/metadata/src/reader/mod.rs index eed0ec7237..9205335e7d 100644 --- a/crates/libs/metadata/src/reader/mod.rs +++ b/crates/libs/metadata/src/reader/mod.rs @@ -553,6 +553,11 @@ impl<'a> Reader<'a> { params[position].array_info = ArrayInfo::Removed; } } + ArrayInfo::Fixed(_) => { + if self.param_free_with(params[position].def).is_some() { + params[position].array_info = ArrayInfo::Removed; + } + } _ => {} } } diff --git a/crates/libs/windows/src/Windows/Win32/Networking/BackgroundIntelligentTransferService/mod.rs b/crates/libs/windows/src/Windows/Win32/Networking/BackgroundIntelligentTransferService/mod.rs index 8d16ad4aed..7d9b70741f 100644 --- a/crates/libs/windows/src/Windows/Win32/Networking/BackgroundIntelligentTransferService/mod.rs +++ b/crates/libs/windows/src/Windows/Win32/Networking/BackgroundIntelligentTransferService/mod.rs @@ -3004,8 +3004,8 @@ impl IBackgroundCopyJobHttpOptions { pub unsafe fn RemoveClientCertificate(&self) -> ::windows::core::Result<()> { (::windows::core::Interface::vtable(self).RemoveClientCertificate)(::windows::core::Interface::as_raw(self)).ok() } - pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: &mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { - (::windows::core::Interface::vtable(self).GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob.as_ptr()), ::core::mem::transmute(psubjectname)).ok() + pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: *mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { + (::windows::core::Interface::vtable(self).GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob), ::core::mem::transmute(psubjectname)).ok() } pub unsafe fn SetCustomHeaders<'a, P0>(&self, requestheaders: P0) -> ::windows::core::Result<()> where @@ -3093,8 +3093,8 @@ impl IBackgroundCopyJobHttpOptions2 { pub unsafe fn RemoveClientCertificate(&self) -> ::windows::core::Result<()> { (::windows::core::Interface::vtable(self).base__.RemoveClientCertificate)(::windows::core::Interface::as_raw(self)).ok() } - pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: &mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { - (::windows::core::Interface::vtable(self).base__.GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob.as_ptr()), ::core::mem::transmute(psubjectname)).ok() + pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: *mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { + (::windows::core::Interface::vtable(self).base__.GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob), ::core::mem::transmute(psubjectname)).ok() } pub unsafe fn SetCustomHeaders<'a, P0>(&self, requestheaders: P0) -> ::windows::core::Result<()> where @@ -3201,8 +3201,8 @@ impl IBackgroundCopyJobHttpOptions3 { pub unsafe fn RemoveClientCertificate(&self) -> ::windows::core::Result<()> { (::windows::core::Interface::vtable(self).base__.base__.RemoveClientCertificate)(::windows::core::Interface::as_raw(self)).ok() } - pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: &mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { - (::windows::core::Interface::vtable(self).base__.base__.GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob.as_ptr()), ::core::mem::transmute(psubjectname)).ok() + pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: *mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { + (::windows::core::Interface::vtable(self).base__.base__.GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob), ::core::mem::transmute(psubjectname)).ok() } pub unsafe fn SetCustomHeaders<'a, P0>(&self, requestheaders: P0) -> ::windows::core::Result<()> where