@@ -541,7 +541,12 @@ ZEND_API bool zend_ini_parse_bool(zend_string *str)
541
541
}
542
542
}
543
543
544
- static zend_long zend_ini_parse_quantity_internal (zend_string * value , bool signed_result , zend_string * * errstr ) /* {{{ */
544
+ typedef enum {
545
+ ZEND_INI_PARSE_QUANTITY_SIGNED ,
546
+ ZEND_INI_PARSE_QUANTITY_UNSIGNED ,
547
+ } zend_ini_parse_quantity_signed_result_t ;
548
+
549
+ static zend_long zend_ini_parse_quantity_internal (zend_string * value , zend_ini_parse_quantity_signed_result_t signed_result , zend_string * * errstr ) /* {{{ */
545
550
{
546
551
char * digits_end = NULL ;
547
552
char * str = ZSTR_VAL (value );
@@ -568,15 +573,15 @@ static zend_long zend_ini_parse_quantity_internal(zend_string *value, bool signe
568
573
zend_ulong retval ;
569
574
errno = 0 ;
570
575
571
- if (signed_result ) {
576
+ if (signed_result == ZEND_INI_PARSE_QUANTITY_SIGNED ) {
572
577
retval = (zend_ulong ) ZEND_STRTOL (digits , & digits_end , 0 );
573
578
} else {
574
579
retval = ZEND_STRTOUL (digits , & digits_end , 0 );
575
580
}
576
581
577
582
if (errno == ERANGE ) {
578
583
overflow = true;
579
- } else if (! signed_result ) {
584
+ } else if (signed_result == ZEND_INI_PARSE_QUANTITY_UNSIGNED ) {
580
585
/* ZEND_STRTOUL() does not report a range error when the subject starts
581
586
* with a minus sign, so we check this here. Ignore "-1" as it is
582
587
* commonly used as max value, for instance in memory_limit=-1. */
@@ -641,7 +646,7 @@ static zend_long zend_ini_parse_quantity_internal(zend_string *value, bool signe
641
646
}
642
647
643
648
if (!overflow ) {
644
- if (signed_result ) {
649
+ if (signed_result == ZEND_INI_PARSE_QUANTITY_SIGNED ) {
645
650
zend_long sretval = (zend_long )retval ;
646
651
if (sretval > 0 ) {
647
652
overflow = (zend_long )retval > ZEND_LONG_MAX / (zend_long )factor ;
@@ -689,23 +694,23 @@ static zend_long zend_ini_parse_quantity_internal(zend_string *value, bool signe
689
694
smart_str_free (& interpreted );
690
695
smart_str_free (& chr );
691
696
692
- return ( zend_long ) retval ;
697
+ return retval ;
693
698
}
694
699
695
700
* errstr = NULL ;
696
- return ( zend_long ) retval ;
701
+ return retval ;
697
702
}
698
703
/* }}} */
699
704
700
705
ZEND_API zend_long zend_ini_parse_quantity (zend_string * value , zend_string * * errstr ) /* {{{ */
701
706
{
702
- return zend_ini_parse_quantity_internal (value , true , errstr );
707
+ return zend_ini_parse_quantity_internal (value , ZEND_INI_PARSE_QUANTITY_SIGNED , errstr );
703
708
}
704
709
/* }}} */
705
710
706
711
ZEND_API zend_ulong zend_ini_parse_uquantity (zend_string * value , zend_string * * errstr ) /* {{{ */
707
712
{
708
- return (zend_ulong ) zend_ini_parse_quantity_internal (value , false , errstr );
713
+ return (zend_ulong ) zend_ini_parse_quantity_internal (value , ZEND_INI_PARSE_QUANTITY_UNSIGNED , errstr );
709
714
}
710
715
/* }}} */
711
716
0 commit comments