1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-31 05:50:42 +02:00

[ticket/10931] Make sure get_bytes() always returns either an int or a float.

PHPBB3-10931
This commit is contained in:
Andreas Fischer
2012-06-11 15:15:08 +02:00
parent e9348b172a
commit 09fb9a9efe
2 changed files with 39 additions and 9 deletions

View File

@@ -138,7 +138,7 @@ class phpbb_php_ini
if (is_numeric($value))
{
// Already in bytes.
return $value;
return $this->to_numeric($value);
}
else if (strlen($value) < 2)
{
@@ -151,7 +151,7 @@ class phpbb_php_ini
return false;
}
$value_numeric = (int) $value;
$value_numeric = $this->to_numeric($value);
switch ($value[strlen($value) - 1])
{
@@ -171,4 +171,17 @@ class phpbb_php_ini
return $value_numeric;
}
/**
* Casts a numeric string $input to an appropriate numeric type (i.e. integer or float)
*
* @param string $input A numeric string.
*
* @return int|float Integer $input if $input fits integer,
* float $input otherwise.
*/
protected function to_numeric($input)
{
return ($input > PHP_INT_MAX) ? (float) $input : (int) $input;
}
}