@@ -892,9 +892,12 @@ PHP_FUNCTION(pcntl_signal)
892
892
RETURN_THROWS ();
893
893
}
894
894
895
- if (signo < 1 || signo >= NSIG ) {
896
- php_error_docref (NULL , E_WARNING , "Invalid signal" );
897
- RETURN_FALSE ;
895
+ if (signo < 1 ) {
896
+ zend_argument_value_error (1 , "must be greater than or equal to 1" );
897
+ RETURN_THROWS ();
898
+ } else if (signo >= NSIG ) {
899
+ zend_argument_value_error (1 , "must be less than %d" , NSIG );
900
+ RETURN_THROWS ();
898
901
}
899
902
900
903
if (!PCNTL_G (spares )) {
@@ -920,8 +923,8 @@ PHP_FUNCTION(pcntl_signal)
920
923
/* Special long value case for SIG_DFL and SIG_IGN */
921
924
if (Z_TYPE_P (handle ) == IS_LONG ) {
922
925
if (Z_LVAL_P (handle ) != (zend_long ) SIG_DFL && Z_LVAL_P (handle ) != (zend_long ) SIG_IGN ) {
923
- php_error_docref ( NULL , E_WARNING , "Invalid value for handle argument specified " );
924
- RETURN_FALSE ;
926
+ zend_argument_value_error ( 2 , "must be either SIG_DFL or SIG_IGN when an integer value is given " );
927
+ RETURN_THROWS () ;
925
928
}
926
929
if (php_signal (signo , (Sigfunc * ) Z_LVAL_P (handle ), (int ) restart_syscalls ) == (void * )SIG_ERR ) {
927
930
PCNTL_G (last_error ) = errno ;
@@ -935,10 +938,11 @@ PHP_FUNCTION(pcntl_signal)
935
938
if (!zend_is_callable_ex (handle , NULL , 0 , NULL , NULL , & error )) {
936
939
zend_string * func_name = zend_get_callable_name (handle );
937
940
PCNTL_G (last_error ) = EINVAL ;
938
- php_error_docref (NULL , E_WARNING , "Specified handler \"%s\" is not callable (%s)" , ZSTR_VAL (func_name ), error );
941
+
942
+ zend_argument_type_error (2 , "must be of type callable|int, %s given" , zend_zval_type_name (handle ));
939
943
zend_string_release_ex (func_name , 0 );
940
944
efree (error );
941
- RETURN_FALSE ;
945
+ RETURN_THROWS () ;
942
946
}
943
947
ZEND_ASSERT (!error );
944
948
@@ -966,8 +970,8 @@ PHP_FUNCTION(pcntl_signal_get_handler)
966
970
}
967
971
968
972
if (signo < 1 || signo > 32 ) {
969
- php_error_docref ( NULL , E_WARNING , "Invalid signal " );
970
- RETURN_FALSE ;
973
+ zend_argument_value_error ( 1 , "must be between 1 and 32 " );
974
+ RETURN_THROWS () ;
971
975
}
972
976
973
977
if ((prev_handle = zend_hash_index_find (& PCNTL_G (php_signal_table ), signo )) != NULL ) {
@@ -1197,8 +1201,8 @@ PHP_FUNCTION(pcntl_getpriority)
1197
1201
php_error_docref (NULL , E_WARNING , "Error %d: No process was located using the given parameters" , errno );
1198
1202
break ;
1199
1203
case EINVAL :
1200
- php_error_docref ( NULL , E_WARNING , "Error %d: Invalid identifier flag", errno );
1201
- break ;
1204
+ zend_argument_value_error ( 2 , "must be a valid identifier flag" );
1205
+ RETURN_THROWS () ;
1202
1206
default :
1203
1207
php_error_docref (NULL , E_WARNING , "Unknown error %d has occurred" , errno );
1204
1208
break ;
@@ -1231,7 +1235,8 @@ PHP_FUNCTION(pcntl_setpriority)
1231
1235
php_error_docref (NULL , E_WARNING , "Error %d: No process was located using the given parameters" , errno );
1232
1236
break ;
1233
1237
case EINVAL :
1234
- php_error_docref (NULL , E_WARNING , "Error %d: Invalid identifier flag" , errno );
1238
+ zend_argument_value_error (3 , "must be a valid identifier flag" );
1239
+ RETURN_THROWS ();
1235
1240
break ;
1236
1241
case EPERM :
1237
1242
php_error_docref (NULL , E_WARNING , "Error %d: A process was located, but neither its effective nor real user ID matched the effective user ID of the caller" , errno );
@@ -1400,19 +1405,18 @@ PHP_FUNCTION(pcntl_async_signals)
1400
1405
PHP_FUNCTION (pcntl_unshare )
1401
1406
{
1402
1407
zend_long flags ;
1403
- int ret ;
1404
1408
1405
1409
ZEND_PARSE_PARAMETERS_START (1 , 1 )
1406
1410
Z_PARAM_LONG (flags )
1407
1411
ZEND_PARSE_PARAMETERS_END ();
1408
1412
1409
- ret = unshare (flags );
1410
- if (ret == -1 ) {
1413
+ if (unshare (flags ) == -1 ) {
1411
1414
PCNTL_G (last_error ) = errno ;
1412
1415
switch (errno ) {
1413
1416
#ifdef EINVAL
1414
1417
case EINVAL :
1415
- php_error_docref (NULL , E_WARNING , "Error %d: Invalid flag specified" , errno );
1418
+ zend_argument_value_error (1 , "must be a valid identifier flag" );
1419
+ RETURN_THROWS ();
1416
1420
break ;
1417
1421
#endif
1418
1422
#ifdef ENOMEM
0 commit comments