Commit graph

34 commits

Author SHA1 Message Date
Saki Takamachi
5a4832f97b
Fixed GH-17398: bcmul memory leak (#17615)
Changed BCG memory allocation to be forcibly released in
PHP_GSHUTDOWN_FUNCTION regardless of refcount.

Fixes #17398
Closes #17615
2025-01-29 19:12:18 +09:00
Jorg Adam Sowa
e56ed6e1ab
BCmath extension code reformatting (#11896)
Re-formats the BCmath extension to have consistent formatting.

Mostly, it adds the spaces in calculations to have them more readable.

Also:

   -  removes unused headers
   -  removes few variables which are used only once in the code

Co-authored-by: George Peter Banyard <girgias@php.net>
2023-08-13 16:17:36 +01:00
George Peter Banyard
68247c02d5
Refactor BCMath bundledlib and extension (#10774)
* ext/bcmath: coding style: use indentation

And add braces to block statements, as the current code was pretty much unreadable with how inconsistent it was.

* ext/bcmath: Remove some useless header inclusions

* ext/bcmath: Use standard C99 bool type instead of char

* ext/bcmath: Include specific headers instead of config.h

* Restructure definitions to reduce header inclusions

* Use size_t as a more appropriate type

* Remove unused variable full_scale

* Refactor bc_raisemod() to get rid of Zend dependencies

This separates the concerns of throwing exceptions back into the PHP_FUNCTION instead of being the responsibility of the library

* Refactor bc_raise() to get rid of Zend dependencies

This separates the concerns of throwing exceptions back into the PHP_FUNCTION instead of being the responsibility of the library

* Refactor bc_divmod() and bc_modulo() to return bool

Return false on division by 0 attempt instead of -1 and true on success instead of 0

* Refactor bc_divide() to return bool

Return false on division by 0 attempt instead of -1 and true on success instead of 0
2023-07-24 16:42:34 +01:00
George Peter Banyard
82e761eaac
Fix [-Wenum-int-mismatch] compiler warnings (#11352) 2023-06-01 13:27:46 +01:00
George Peter Banyard
f13d541ca6
Fix GCC 12 compiler warnings (#10713)
* Fix -Wunused-but-set-variable compiler warning in ext/mysqli

* Fix -Wstrict-prototypes compiler warning in ext/mysqlnd

* Fix -Wstrict-prototypes compiler warning in ext/soap

* Fix -Wunused-but-set-variable compiler warning in ext/exif

However, this code looks really sketchy...

* Fix -Wstrict-prototypes compiler warning in ext/openssl

* Fix -Wstrict-prototypes compiler warning in ext/dba

Add void to our bundled libraries

* Refactor bundled BCMath library

Fix -Wdeprecated-non-prototype compiler warnings
Use bool instead of char/int
Cleanup some useless header includes
2023-02-28 14:21:01 +00:00
Christoph M. Becker
d66854bece
Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix #78238: BCMath returns "-0"
2021-07-16 16:01:03 +02:00
Christoph M. Becker
9fbcaa57aa
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fix #78238: BCMath returns "-0"
2021-07-16 15:56:15 +02:00
Christoph M. Becker
bcb89c75ec
Fix #78238: BCMath returns "-0"
There is no negative zero in the decimal system, so we must suppress
the sign.

Closes GH-7250.
2021-07-16 15:54:24 +02:00
George Peter Banyard
57a8bf62dd
Use standard function declaration style instead of K&R in libbcmath
Fixes [-Wstrict-prototypes] warnings.
2021-05-12 15:33:55 +01:00
George Peter Banyard
cd05b56a6f Promote some warnings in BCMath to Errors
Also do a bit of refactoring at the same time.

Closes GH-6105
2020-09-11 17:40:06 +02:00
vladyslavstartsev
a07d422ade Warn about non well-formed arguments in bcmath
Co-Authored-By: Nikita Popov <nikita.ppv@googlemail.com>
Co-Authored-By: Christoph M. Becker <cmbecker69@gmx.de>
2019-05-14 15:04:21 +02:00
Peter Kokot
eb9ad31b48 [ci skip] Rename libbcmath license file to LICENSE
- More common filename accross the PHP repository
- Additionally, this patch replaces some legacy form feed (FF or ^L)
  characters (for printers) to LF (\n) newline character.
2019-05-07 01:09:25 +02:00
Christoph M. Becker
73af7a847c Merge branch 'pull-request/2742'
* pull-request/2742:
  Fixed bug #66364 (BCMath bcmul ignores scale parameter)
2017-09-18 15:21:22 +02:00
Christoph M. Becker
fd73a54c30 Fixed bug #75169 (BCMath errors/warnings bypass error handling)
Instead of writing warning messages to `stderr`, we employ PHP's error
handling to raise `E_WARNING` even for the single case where
`bc_rt_error()` has been called, since that did not actually error out.
We choose to call `php_error_docref()` directly in libbcmath, since
there is no upstream, and since other PHP core functionality is already
used in our bundled libbcmath. Accordingly, we remove `rt.c` so it will
not be accidentally used in the future.

Besides adapting a few existing tests, we add new tests so that the
warnings are tested at least once. We also get rid of the Windows
specific tests, since the warning behavior is now supposed to be
platform-agnostic.
2017-09-09 23:57:22 +02:00
Christoph M. Becker
870ed5106d Fixed bug #66364 (BCMath bcmul ignores scale parameter)
We change `bcmul()` and `bcpow()` so that the result has exactly the
requested scale (i.e. decimal places) to make them consistent with the
other BCMath functions.  This also changes our stance regarding bug
#52748, which had been classified as documentation problem.

We do not manipulate the numbers themselves (anymore), but rather
introduce `bc_num2str_ex()` which accepts a scale parameter that
overrides the scale of the number by omitting extraneous decimals and
adding zeros, respectively.  This also allows us to get rid of
`split_bc_num()`, which fixes bug #75164 as well.
2017-09-08 18:31:04 +02:00
Christoph M. Becker
657695fe97 Remove unused member
The `n_next` member of struct `bc_struct` is unused; the only code that
would use this member has been disabled since libbcmath has been
bundled nearly 17 years ago.  Apparently, `n_next` has been designed to
build a linked list of free numbers, but it is doubtful whether that
would be an improvement over relying on the efficiency of the ZendMM,
so we remove the remaining support altogether.

The ABI break probably affects nobody, but would be okay for a new
minor version according to our release process, anyway.
2017-09-08 16:24:38 +02:00
Anatol Belski
8a8a441972 fix clang compat 2016-08-27 22:25:02 +02:00
Stanislav Malyshev
b7a7b1a624 trailing whitespace removal 2015-01-10 15:07:38 -08:00
Anatol Belski
bdeb220f48 first shot remove TSRMLS_* things 2014-12-13 23:06:14 +01:00
Xinchen Hui
fee9d4cafd Refactor bcmath 2014-05-05 14:26:23 +08:00
Kalle Sommer Nielsen
5da75298a0 config.h is in this directory, not in ext/bcmath root, fixes re-compilation for me 2009-06-03 01:18:42 +00:00
Jani Taskinen
68a8a0f89c - Revert bad fix 2008-08-15 16:37:22 +00:00
Pierre Joye
30c3c16143 - no config.h in ext/ 2008-08-15 15:38:55 +00:00
Rob Richards
97a79d5c77 revert config header change 2007-09-11 11:24:39 +00:00
Rob Richards
67e6942045 point to valid config header 2007-09-08 09:56:52 +00:00
foobar
a08c1e4dce - Brought ext/bcmath to the new millennium
# consistency..
2003-12-09 23:59:33 +00:00
foobar
73b276ad76 missing config.h include 2003-12-01 14:01:38 +00:00
foobar
f7830195c0 - Fixed bug #26462 (phpize + ext/bcmath -> compile error) 2003-11-29 13:33:34 +00:00
foobar
4e3d4e4329 - Let's be consistent with these.. 2003-02-17 03:07:33 +00:00
Sander Roobol
f200f739d8 Made bcmath extension thread safe.
@Made bcmath extension thread safe. (Sander)
2002-11-22 09:25:29 +00:00
Andi Gutmans
b0528dbe5e - Revert previous patch 2002-11-20 20:03:01 +00:00
Andi Gutmans
e6b7ab9db8 - Intermediate commit which works on making bcmath thread-safe. 2002-11-20 19:48:12 +00:00
Zeev Suraski
f6f6c4d7e6 Whitespace 2001-08-11 16:39:07 +00:00
Zeev Suraski
c476bce2f1 At long last, import the bcmath library, by Phil Nelson 2000-11-22 20:20:02 +00:00