]> Repositorios git - scryer-prolog.git/commitdiff
don't panic on unexpected/invalid value
authorBennet Bleßmann <[email protected]>
Mon, 17 Feb 2025 19:19:36 +0000 (20:19 +0100)
committerBennet Bleßmann <[email protected]>
Fri, 1 Aug 2025 17:10:27 +0000 (19:10 +0200)
src/ffi.rs

index 0b4a67574e624c14b48c2cf0f46659ecbc0e3674..1629a7b45eb74586772134a5fdec72091736b806 100644 (file)
@@ -292,6 +292,7 @@ impl ForeignFunctionTable {
 
                         let field = &struct_type.fields[i];
                         unsafe {
+                            #[allow(clippy::wildcard_in_or_patterns)]
                             match (*field.as_raw_ptr()).type_ as u32 {
                                 libffi::raw::FFI_TYPE_UINT8 => try_write_int!(u8),
                                 libffi::raw::FFI_TYPE_SINT8 => try_write_int!(i8),
@@ -322,9 +323,11 @@ impl ForeignFunctionTable {
                                     );
                                     field_ptr = field_ptr.add(struct_size);
                                 }
-                                _ => {
-                                    unreachable!()
-                                }
+                                libffi::raw::FFI_TYPE_VOID
+                                | libffi::raw::FFI_TYPE_INT
+                                | libffi::raw::FFI_TYPE_LONGDOUBLE
+                                | libffi::raw::FFI_TYPE_COMPLEX
+                                | _ => return Err(FFIError::InvalidFFIType),
                             }
                         }
                     }