diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2017-09-11 23:58:31 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2017-09-11 23:58:31 +0200 |
commit | 0d890025ec338b767afd8433d3d852d7a4bba1d8 (patch) | |
tree | 4b0b7f9c4cde88e1e73ec5acb96de590cf22cfc9 /ext/bcmath | |
parent | 86dd321c0c14497f1e72e711fbbb157f2fc9b345 (diff) | |
parent | 77f3cef35ced72f4aa873427ec053763ed3f3771 (diff) | |
download | php-git-0d890025ec338b767afd8433d3d852d7a4bba1d8.tar.gz |
Merge branch 'PHP-7.2'
* PHP-7.2:
Fixed bug #46781 (BC math handles minus zero incorrectly)
Diffstat (limited to 'ext/bcmath')
-rw-r--r-- | ext/bcmath/libbcmath/src/str2num.c | 3 | ||||
-rw-r--r-- | ext/bcmath/tests/bug46781.phpt | 16 |
2 files changed, 19 insertions, 0 deletions
diff --git a/ext/bcmath/libbcmath/src/str2num.c b/ext/bcmath/libbcmath/src/str2num.c index ef505e86e1..62544de80e 100644 --- a/ext/bcmath/libbcmath/src/str2num.c +++ b/ext/bcmath/libbcmath/src/str2num.c @@ -105,5 +105,8 @@ bc_str2num (bc_num *num, char *str, int scale) for (;strscale > 0; strscale--) *nptr++ = CH_VAL(*ptr++); } + + if (bc_is_zero (*num)) + (*num)->n_sign = PLUS; } diff --git a/ext/bcmath/tests/bug46781.phpt b/ext/bcmath/tests/bug46781.phpt new file mode 100644 index 0000000000..caffe83860 --- /dev/null +++ b/ext/bcmath/tests/bug46781.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #46781 (BC math handles minus zero incorrectly) +--SKIPIF-- +<?php +if (!extension_loaded('bcmath')) die('skip bcmath extension is not available'); +?> +--FILE-- +<?php +var_dump(bcadd('-0.0', '-0.0', 1)); +var_dump(bccomp('-0.0', '0', 1)); +?> +===DONE=== +--EXPECT-- +string(3) "0.0" +int(0) +===DONE=== |