]> granicus.if.org Git - php/commitdiff
Fix handling and extend ext/ffi/tests/044.phpt
authorAnatol Belski <ab@php.net>
Sat, 30 Mar 2019 11:53:32 +0000 (12:53 +0100)
committerAnatol Belski <ab@php.net>
Sat, 30 Mar 2019 11:53:32 +0000 (12:53 +0100)
ext/ffi/ffi.c
ext/ffi/tests/044.phpt

index f062170f42f250bd524e9386eadb0f6dd3105fa3..e124995c500c284d20af39266922b11312f60573 100644 (file)
@@ -5004,12 +5004,18 @@ static void zend_ffi_finalize_type(zend_ffi_dcl *dcl) /* {{{ */
                                        dcl->type = (zend_ffi_type*)&zend_ffi_type_uint64;
                                }
                                break;
+#ifdef _WIN32
+                       case ZEND_FFI_DCL_LONG_LONG:
+#endif
                        case ZEND_FFI_DCL_LONG_LONG|ZEND_FFI_DCL_LONG:
                        case ZEND_FFI_DCL_LONG_LONG|ZEND_FFI_DCL_LONG|ZEND_FFI_DCL_SIGNED:
                        case ZEND_FFI_DCL_LONG_LONG|ZEND_FFI_DCL_LONG|ZEND_FFI_DCL_INT:
                        case ZEND_FFI_DCL_LONG_LONG|ZEND_FFI_DCL_LONG|ZEND_FFI_DCL_SIGNED|ZEND_FFI_DCL_INT:
                                dcl->type = (zend_ffi_type*)&zend_ffi_type_sint64;
                                break;
+#ifdef _WIN32
+                       case ZEND_FFI_DCL_LONG_LONG|ZEND_FFI_DCL_UNSIGNED:
+#endif
                        case ZEND_FFI_DCL_LONG_LONG|ZEND_FFI_DCL_LONG|ZEND_FFI_DCL_UNSIGNED:
                        case ZEND_FFI_DCL_LONG_LONG|ZEND_FFI_DCL_LONG|ZEND_FFI_DCL_UNSIGNED|ZEND_FFI_DCL_INT:
                                dcl->type = (zend_ffi_type*)&zend_ffi_type_uint64;
index ab07e23e1bfd571c2897d091bc14391f0589aed7..f0d08ecd40de41bfc147e0a4b65f0faa7af4f910 100644 (file)
@@ -8,23 +8,35 @@ ffi.enable=1
 <?php
 $ffi = FFI::cdef("
 typedef int a __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int ua __attribute__ ((__mode__ (__QI__)));
 typedef int b __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int ub __attribute__ ((__mode__ (__HI__)));
 typedef int c __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int uc __attribute__ ((__mode__ (__SI__)));
 typedef int d __attribute__ ((__mode__ (__DI__)));
+typedef unsigned int ud __attribute__ ((__mode__ (__DI__)));
 typedef float e __attribute__ ((__mode__ (__SF__)));
 typedef float f __attribute__ ((__mode__ (__DF__)));
 ");
 var_dump(FFI::sizeof($ffi->new("a")));
+var_dump(FFI::sizeof($ffi->new("ua")));
 var_dump(FFI::sizeof($ffi->new("b")));
+var_dump(FFI::sizeof($ffi->new("ub")));
 var_dump(FFI::sizeof($ffi->new("c")));
+var_dump(FFI::sizeof($ffi->new("uc")));
 var_dump(FFI::sizeof($ffi->new("d")));
+var_dump(FFI::sizeof($ffi->new("ud")));
 var_dump(FFI::sizeof($ffi->new("e")));
 var_dump(FFI::sizeof($ffi->new("f")));
 ?>
 --EXPECT--
 int(1)
+int(1)
+int(2)
 int(2)
 int(4)
+int(4)
+int(8)
 int(8)
 int(4)
 int(8)