Skip to content

Commit 13d15e4

Browse files
committed
ext/standard: Math: Throw ValueError for log() when base is 1
1 parent defc0be commit 13d15e4

2 files changed

Lines changed: 36 additions & 1 deletion

File tree

ext/standard/math.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -721,8 +721,10 @@ PHP_FUNCTION(log)
721721
RETURN_DOUBLE(log10(num));
722722
}
723723

724+
724725
if (base == 1.0) {
725-
RETURN_DOUBLE(ZEND_NAN);
726+
zend_argument_value_error(2, "must not be equal to 1");
727+
RETURN_THROWS();
726728
}
727729

728730
if (base <= 0.0) {
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
--TEST--
2+
log(): Throw ValueError for invalid base values
3+
--FILE--
4+
<?php
5+
6+
try {
7+
log(10, 1);
8+
} catch (ValueError $e) {
9+
echo $e->getMessage(), PHP_EOL;
10+
}
11+
12+
try {
13+
log(10, 0);
14+
} catch (ValueError $e) {
15+
echo $e->getMessage(), PHP_EOL;
16+
}
17+
18+
try {
19+
log(10, -2);
20+
} catch (ValueError $e) {
21+
echo $e->getMessage(), PHP_EOL;
22+
}
23+
24+
echo log(8, 2), PHP_EOL;
25+
echo log(100, 10), PHP_EOL;
26+
27+
?>
28+
--EXPECT--
29+
log(): Argument #2 ($base) must not be equal to 1
30+
log(): Argument #2 ($base) must be greater than 0
31+
log(): Argument #2 ($base) must be greater than 0
32+
3
33+
2

0 commit comments

Comments
 (0)