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