028.phpt 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. --TEST--
  2. FFI 028: Incomplete arrays inside structure
  3. --EXTENSIONS--
  4. ffi
  5. --INI--
  6. ffi.enable=1
  7. --FILE--
  8. <?php
  9. try {
  10. FFI::cdef("struct _x {int a; int b[0];};");
  11. echo "ok\n";
  12. } catch (Throwable $e) {
  13. echo get_class($e) . ": " . $e->getMessage()."\n";
  14. }
  15. try {
  16. FFI::cdef("struct _x {int a; int b[];};");
  17. echo "ok\n";
  18. } catch (Throwable $e) {
  19. echo get_class($e) . ": " . $e->getMessage()."\n";
  20. }
  21. try {
  22. FFI::cdef("struct _x {int a[0]; int b;};");
  23. echo "ok\n";
  24. } catch (Throwable $e) {
  25. echo get_class($e) . ": " . $e->getMessage()."\n";
  26. }
  27. try {
  28. FFI::cdef("struct _x {int a[]; int b;};");
  29. echo "ok\n";
  30. } catch (Throwable $e) {
  31. echo get_class($e) . ": " . $e->getMessage()."\n";
  32. }
  33. try {
  34. FFI::cdef("struct _x { struct {int a; int b[];}; int c;};");
  35. echo "ok\n";
  36. } catch (Throwable $e) {
  37. echo get_class($e) . ": " . $e->getMessage()."\n";
  38. }
  39. try {
  40. FFI::cdef("union _x {int a; int b[];};");
  41. echo "ok\n";
  42. } catch (Throwable $e) {
  43. echo get_class($e) . ": " . $e->getMessage()."\n";
  44. }
  45. ?>
  46. --EXPECT--
  47. ok
  48. ok
  49. ok
  50. FFI\ParserException: Flexible array member not at end of struct at line 1
  51. FFI\ParserException: Flexible array member not at end of struct at line 1
  52. FFI\ParserException: Flexible array member in union at line 1