@@ -731,7 +731,7 @@ static int mysqlnd_zval_array_to_mysqlnd_array(zval *in_array, MYSQLND ***out_ar
731731 int i = 0 , current = 0 ;
732732
733733 if (Z_TYPE_P (in_array ) != IS_ARRAY ) {
734- return 0 ;
734+ return SUCCESS ;
735735 }
736736 * out_array = ecalloc (zend_hash_num_elements (Z_ARRVAL_P (in_array )) + 1 , sizeof (MYSQLND * ));
737737 ZEND_HASH_FOREACH_VAL (Z_ARRVAL_P (in_array ), elem ) {
@@ -744,18 +744,18 @@ static int mysqlnd_zval_array_to_mysqlnd_array(zval *in_array, MYSQLND ***out_ar
744744 MYSQLI_RESOURCE * my_res ;
745745 mysqli_object * intern = Z_MYSQLI_P (elem );
746746 if (!(my_res = (MYSQLI_RESOURCE * )intern -> ptr )) {
747- php_error_docref (NULL , E_WARNING , "[%d] Couldn't fetch %s" , i , ZSTR_VAL (intern -> zo .ce -> name ));
748- continue ;
747+ zend_throw_error (NULL , "%s object is already closed" , ZSTR_VAL (intern -> zo .ce -> name ));
748+ return FAILURE ;
749749 }
750750 mysql = (MY_MYSQL * ) my_res -> ptr ;
751751 if (MYSQLI_STATUS_VALID && my_res -> status < MYSQLI_STATUS_VALID ) {
752- php_error_docref (NULL , E_WARNING , "Invalid object %d or resource %s" , i , ZSTR_VAL (intern -> zo .ce -> name ));
753- continue ;
752+ zend_throw_error (NULL , "%s object is not fully initialized" , ZSTR_VAL (intern -> zo .ce -> name ));
753+ return FAILURE ;
754754 }
755755 (* out_array )[current ++ ] = mysql -> mysql ;
756756 }
757757 } ZEND_HASH_FOREACH_END ();
758- return 0 ;
758+ return SUCCESS ;
759759}
760760/* }}} */
761761
@@ -859,10 +859,16 @@ PHP_FUNCTION(mysqli_poll)
859859 }
860860
861861 if (r_array != NULL ) {
862- mysqlnd_zval_array_to_mysqlnd_array (r_array , & new_r_array );
862+ if (mysqlnd_zval_array_to_mysqlnd_array (r_array , & new_r_array ) == FAILURE ) {
863+ efree (new_r_array );
864+ RETURN_THROWS ();
865+ }
863866 }
864867 if (e_array != NULL ) {
865- mysqlnd_zval_array_to_mysqlnd_array (e_array , & new_e_array );
868+ if (mysqlnd_zval_array_to_mysqlnd_array (e_array , & new_e_array ) == FAILURE ) {
869+ efree (new_e_array );
870+ RETURN_THROWS ();
871+ }
866872 }
867873
868874 ret = mysqlnd_poll (new_r_array , new_e_array , & new_dont_poll_array , sec , usec , & desc_num );
0 commit comments