diff --git a/vulkano/autogen/properties.rs b/vulkano/autogen/properties.rs index 9be0da6667..a0c39d17df 100644 --- a/vulkano/autogen/properties.rs +++ b/vulkano/autogen/properties.rs @@ -92,14 +92,19 @@ fn properties_output(members: &[PropertiesMember]) -> TokenStream { let len_field_name = Ident::new(len_field_name.as_str(), Span::call_site()); quote! { - properties_ffi.#ffi_member.map(|s| - unsafe { + properties_ffi.#ffi_member.and_then(|s| { + let ptr = s #ffi_member_field .#ffi_name .cast_const(); + if ptr.is_null() { + return None; + }; + + Some(unsafe { std::slice::from_raw_parts( - s #ffi_member_field .#ffi_name .cast_const(), + ptr, s #ffi_member_field .#len_field_name as _, ) - } - ) + }) + }) } } else { quote! { properties_ffi.#ffi_member.map(|s| s #ffi_member_field .#ffi_name) }