@@ -199,8 +199,16 @@ static void* phpgo_function_conv_arg(int cbid, int idx, char ch, int zty, zval *
199199 goapi_new_value (GT_Int64 , (uint64_t )arg , & rv );
200200 } else if (ch == 'b' ) {
201201 convert_to_boolean_ex (conv_zarg );
202+ #ifdef ZEND_ENGINE_3
203+ if (Z_TYPE_P (conv_zarg ) == IS_TRUE ) {
204+ goapi_new_value (GT_Bool , (uint64_t )1 , & rv );
205+ } else {
206+ goapi_new_value (GT_Bool , (uint64_t )0 , & rv );
207+ }
208+ #else
202209 zend_bool arg = (zend_bool )Z_BVAL_P (macro_zarg );
203210 goapi_new_value (GT_Bool , (uint64_t )arg , & rv );
211+ #endif
204212 } else if (ch == 'd' ) {
205213 convert_to_double_ex (conv_zarg );
206214 double arg = (double )Z_DVAL_P (macro_zarg );
@@ -215,12 +223,15 @@ static void* phpgo_function_conv_arg(int cbid, int idx, char ch, int zty, zval *
215223 char * arg = Z_STRVAL_P (macro_zarg );
216224 goapi_new_value (GT_String , (uint64_t )arg , & rv );
217225#ifdef ZEND_ENGINE_3
218- } else if (Z_TYPE_P (macro_zarg ) == _IS_BOOL ) {
226+ } else if (Z_TYPE_P (macro_zarg ) == IS_TRUE ) {
227+ goapi_new_value (GT_Bool , (uint64_t )1 , & rv );
228+ } else if (Z_TYPE_P (macro_zarg ) == IS_FALSE ) {
229+ goapi_new_value (GT_Bool , (uint64_t )0 , & rv );
219230#else
220231 } else if (Z_TYPE_P (macro_zarg ) == IS_BOOL ) {
221- #endif
222232 zend_bool arg = (zend_bool )Z_BVAL_P (macro_zarg );
223233 goapi_new_value (GT_Bool , (uint64_t )arg , & rv );
234+ #endif
224235 } else if (Z_TYPE_P (macro_zarg ) == IS_DOUBLE ) {
225236 double * parg = calloc (1 , sizeof (double ));
226237 * parg = (double )Z_DVAL_P (macro_zarg );
@@ -409,7 +420,7 @@ static void phpgo_method_conv_args(int cbid, phpgo_callback_info* cbi, int suppl
409420static void phpgo_function_reutrn_php_array (void * p0 , zval * return_value ) {
410421 array_init (return_value );
411422
412- goapi_set_php_array (p0 , & return_value );
423+ goapi_set_php_array (p0 , ( void * * ) & return_value );
413424}
414425
415426// go类型的返回值转换为PHP类型的变量值
@@ -436,6 +447,12 @@ static int phpgo_function_conv_ret(int cbid, phpgo_callback_info* cbi, void *p0,
436447 free ((double * )rv );
437448 break ;
438449#ifdef ZEND_ENGINE_3
450+ case IS_TRUE :
451+ RETVAL_TRUE ;
452+ break ;
453+ case IS_FALSE :
454+ RETVAL_FALSE ;
455+ break ;
439456 case _IS_BOOL :
440457#else
441458 case IS_BOOL :
0 commit comments