Hello, I am a little confused about this while working on my extension. I've compiled PHP with --enable-debug and this only produces a fatal error when used with that flag, without debug it runs fine.
"Fatal error: Arginfo / zpp mismatch during call of raylib\Vector3::__construct()" Here is the c code snippet of my code that produces the error: ZEND_BEGIN_ARG_INFO_EX(arginfo_vector3__construct, 0, 0, 0) ZEND_ARG_TYPE_MASK(0, x, IS_DOUBLE, "0") ZEND_ARG_TYPE_MASK(0, y, IS_DOUBLE, "0") ZEND_ARG_TYPE_MASK(0, z, IS_DOUBLE, "0") ZEND_END_ARG_INFO() PHP_METHOD(Vector3, __construct) { double x; bool x_is_null = 1; double y; bool y_is_null = 1; double z; bool z_is_null = 1; ZEND_PARSE_PARAMETERS_START(0, 3) Z_PARAM_OPTIONAL Z_PARAM_DOUBLE_OR_NULL(x, x_is_null) Z_PARAM_DOUBLE_OR_NULL(y, y_is_null) Z_PARAM_DOUBLE_OR_NULL(z, z_is_null) ZEND_PARSE_PARAMETERS_END(); php_raylib_vector3_object *intern = Z_VECTOR3_OBJ_P(ZEND_THIS); if (x_is_null) { x = 0.0f; } if (y_is_null) { y = 0.0f; } if (z_is_null) { z = 0.0f; } intern->vector3->data = (Vector3) { .x = (float) x, .y = (float) y, .z = (float) z }; } Then the line of PHP code: $position = new Vector3(4.0, 2.0, 4.0); I am confused because these are all optional parameters, and it should work? If I exclude the parameters in my PHP code it works fine. If I swap the following: ZEND_BEGIN_ARG_INFO_EX(arginfo_vector3__construct, 0, 0, 0) ZEND_ARG_TYPE_MASK(0, x, IS_DOUBLE, "0") ZEND_ARG_TYPE_MASK(0, y, IS_DOUBLE, "0") ZEND_ARG_TYPE_MASK(0, z, IS_DOUBLE, "0") ZEND_END_ARG_INFO() For the following: ZEND_BEGIN_ARG_INFO_EX(arginfo_vector3__construct, 0, 0, 0) ZEND_ARG_INFO(0, x) ZEND_ARG_INFO(0, y) ZEND_ARG_INFO(0, z) ZEND_END_ARG_INFO() Then it works fine. Can I not use ZEND_ARG_TYPE_MASK in this context? I only put the type mask with the default value so it works better with PHP's built-in reflection, so is this not possible? I've seen similar uses with Tidy and Soap extensions so I'm a little baffled on why it's an issue here. I think the only difference is that where the ARG_INFO is, is in the header files versus the C files of those extensions. Thanks, Joseph Montanez -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php