Commit graph

255 commits

Author SHA1 Message Date
George Peter Banyard
3d5df064ca Merge branch 'PHP-8.0' into PHP-8.1 2022-09-13 11:33:09 +01:00
George Peter Banyard
293e69179d Fix GH-9308 GMP throws the wrong error when a GMP object is passed to gmp_init()
Closes GH-9490
2022-09-13 11:24:19 +01:00
Nikita Popov
17ceed9ae7 Implement __serialize() and __unserialize() on GMP
GMP directly implements internal serialize/unserialize handlers
rather than going through the Serializable interface, so it ended
up being missed when adding the new __serialize()/__unserialize()
methods to other classes.

The serialization format is similar to before, but uses hex instead
of decimal encoding and omits the members if not used (which should
be almost always).
2021-11-18 11:11:52 +01:00
Patrick Allaert
aff365871a Fixed some spaces used instead of tabs 2021-06-29 11:30:26 +02:00
Nikita Popov
d43bc343ab Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix bug #81119
2021-06-10 14:48:06 +02:00
Nikita Popov
087773879f Fix bug #81119
The implementation for functions and operators is shared. However,
we should not be generating argument errors for operators.
2021-06-10 14:47:36 +02:00
KsaR
01b3fc03c3
Update http->https in license (#6945)
1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https.
2. Update few license 3.0 to 3.01 as 3.0 states "php 5.1.1, 4.1.1, and earlier".
3. In some license comments is "at through the world-wide-web" while most is without "at", so deleted.
4. fixed indentation in some files before |
2021-05-06 12:16:35 +02:00
Nikita Popov
b10416a652 Deprecate passing null to non-nullable arg of internal function
This deprecates passing null to non-nullable scale arguments of
internal functions, with the eventual goal of making the behavior
consistent with userland functions, where null is never accepted
for non-nullable arguments.

This change is expected to cause quite a lot of fallout. In most
cases, calling code should be adjusted to avoid passing null. In
some cases, PHP should be adjusted to make some function arguments
nullable. I have already fixed a number of functions before landing
this, but feel free to file a bug if you encounter a function that
doesn't accept null, but probably should. (The rule of thumb for
this to be applicable is that the function must have special behavior
for 0 or "", which is distinct from the natural behavior of the
parameter.)

RFC: https://wiki.php.net/rfc/deprecate_null_to_scalar_internal_arg

Closes GH-6475.
2021-02-11 21:46:13 +01:00
Máté Kocsis
98fb565c74
Generate class entries from stubs for another batch of extensions
Closes GH-6669
2021-02-08 19:53:55 +01:00
Nikita Popov
3e01f5afb1 Replace zend_bool uses with bool
We're starting to see a mix between uses of zend_bool and bool.
Replace all usages with the standard bool type everywhere.

Of course, zend_bool is retained as an alias.
2021-01-15 12:33:06 +01:00
George Peter Banyard
589bdf30b2 Implement Explicit octal notation for integers RFC
RFC: https://wiki.php.net/rfc/explicit_octal_notation

Add an extensive test suits for other variants of integer literals

Closes GH-6360
2021-01-04 21:09:23 +01:00
George Peter Banyard
1b5c62facd Fix GMP comparison object handler
gmp_cmp() doesn't return false anymore in PHP 8 but will throw
an Error if compared to a non numeric string or another type of object.

Closes GH-6553
2021-01-04 14:47:50 +01:00
Nikita Popov
65f14b0d6c Throw ValueError instead of TypeError for malformed GMP number
If the passed argument has correct type (string) but does not
have a well-formed value, throw ValueError instead of TypeError.

Closes GH-6572.
2021-01-04 14:30:08 +01:00
George Peter Banyard
abecaab09f Fix #80560: Strings containing only a base prefix return 0 object
Closes GH-6549.
2020-12-30 12:50:04 +01:00
Nikita Popov
682cc42900 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fix leak in gmp_export()
2020-10-15 10:17:55 +02:00
Nikita Popov
fb246bec14 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix leak in gmp_export()
2020-10-15 10:16:56 +02:00
Nikita Popov
a29016d70d Fix leak in gmp_export() 2020-10-15 10:16:22 +02:00
Nikita Popov
0286decdb4 Accept GMP|string|int union in GMP functions
This changes GMP functions to accept a GMP|string|int union with
standard semantics (and thus also uses it in function signatures).

Relative to the previous behavior, this means that GMP functions
in weak mode now also accept float and null, and in strict mode no
longer accept bool, and have full type information.

Closes GH-6139.
2020-09-16 17:17:07 +02:00
Nikita Popov
f08e666e4b Remove unused GMP_ABS() macro 2020-09-16 11:05:47 +02:00
George Peter Banyard
e208cb23c6 Promote various warnings to Error in GMP extension
This gets rid of most false returns

Closes GH-5882
2020-08-07 18:17:34 +02:00
Max Semenik
2b5de6f839
Remove proto comments from C files
Closes GH-5758
2020-07-06 21:13:34 +02:00
twosee
1b85e749c7 Fix warning of strict-prototypes
Closes GH-5673.
2020-06-07 10:36:50 +02:00
Máté Kocsis
43095a55e2
Promote warning related to operator overloading in ext/gmp to an exception 2020-05-25 17:26:33 +02:00
Nikita Popov
2d517f68fb Fix function signature mismatches in GMP
This is fairly annoying. Add adapter functions for cases where
we are discarding a return value.

Some of the issues are legitimate in that we were previously
truncating some unsigned long return values to int implicitly,
though I doubt it makes a difference in practice.

This fixes -Wcast-function-type warnings.
2020-04-15 11:01:12 +02:00
Máté Kocsis
5322de1ba8
Generate functions entries from stubs for another set of extensions
Closes GH-5351
2020-04-05 00:59:44 +02:00
Máté Kocsis
d9ac1ca8de
Use ZEND_THROWS() during ZPP in the GD, gettext, GMP, and hash extensions 2019-12-31 00:21:38 +01:00
Dmitry Stogov
b02b81299c Comparison cleanup:
- introduce zend_compare() that returns -1,0,1 dirctly (without intermediate zval)
- remove compare_objects() object handler, and keep only compare() handler
2019-10-07 17:57:49 +03:00
Gabriel Caruso
5d6e923d46
Remove mention of PHP major version in Copyright headers
Closes GH-4732.
2019-09-25 14:51:43 +02:00
Christoph M. Becker
64d0416a72 Add ext/gmp stubs 2019-08-25 17:56:39 +02:00
Nikita Popov
466666c616 Merge branch 'PHP-7.4' 2019-06-11 17:12:33 +02:00
Nikita Popov
fa5513aefe Remove unused gmp_unary_ui_op() function 2019-06-11 17:01:29 +02:00
Dmitry Stogov
83804519df Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros 2019-05-28 20:10:02 +03:00
Nikita Popov
bbeec4c20f Avoid uninitialized variable warnings in gmp 2019-04-12 15:12:45 +02:00
Nikita Popov
3d9c48035b Avoid uninitialized variable warnings in gmp 2019-04-12 15:12:39 +02:00
Dmitry Stogov
91ef4124e5 Refactor zend_object_handlers API to pass zend_object* and zend_string* insted of zval(s). 2019-02-04 13:20:25 +03:00
Peter Kokot
623911f993 Merge branch 'PHP-7.4'
* PHP-7.4:
  Remove local variables
2019-02-03 21:23:18 +01:00
Peter Kokot
92ac598aab Remove local variables
This patch removes the so called local variables defined per
file basis for certain editors to properly show tab width, and
similar settings. These are mainly used by Vim and Emacs editors
yet with recent changes the once working definitions don't work
anymore in Vim without custom plugins or additional configuration.
Neither are these settings synced across the PHP code base.

A simpler and better approach is EditorConfig and fixing code
using some code style fixing tools in the future instead.

This patch also removes the so called modelines for Vim. Modelines
allow Vim editor specifically to set some editor configuration such as
syntax highlighting, indentation style and tab width to be set in the
first line or the last 5 lines per file basis. Since the php test
files have syntax highlighting already set in most editors properly and
EditorConfig takes care of the indentation settings, this patch removes
these as well for the Vim 6.0 and newer versions.

With the removal of local variables for certain editors such as
Emacs and Vim, the footer is also probably not needed anymore when
creating extensions using ext_skel.php script.

Additionally, Vim modelines for setting php syntax and some editor
settings has been removed from some *.phpt files.  All these are
mostly not relevant for phpt files neither work properly in the
middle of the file.
2019-02-03 21:03:00 +01:00
Zeev Suraski
0cf7de1c70 Remove yearly range from copyright notice 2019-01-30 11:03:12 +02:00
Zeev Suraski
38c337f22e Remove year range from copyright notice 2019-01-30 11:00:23 +02:00
Nikita Popov
734c305a82 Remove deprecated gmp_random() function
Deprecated in PHP 7.2 as part of
https://wiki.php.net/rfc/deprecations_php_7_2.
2019-01-28 15:58:22 +01:00
Peter Kokot
a5e80b22e1 Fix typos in code comments 2018-07-25 11:57:11 +02:00
Dmitry Stogov
77c6ca7b62 Fixed wrong zval_dtor() usage 2018-07-05 13:37:59 +03:00
Dmitry Stogov
b6cc4d2009 Use zval_ptr_dtor() instead of zval_dtor() in internal functions that destroy new created object (This is safer and produces less code) 2018-07-05 11:54:26 +03:00
Dmitry Stogov
4a475a4976 Replace legacy zval_dtor() by zval_ptr_dtor_nogc() or even more specialized destructors.
zval_dtor() doesn't make a lot of sense in PHP-7.* and it's used incorrectly in some places.
Its occurances should be replaced by zval_ptr_dtor() or zval_ptr_dtor_nogc(), or even more specialized destructors.
2018-07-04 19:22:24 +03:00
Dmitry Stogov
f2b4ec4bdc Export standard object handlers, to avoid indirect access 2018-05-31 11:57:22 +03:00
Dmitry Stogov
5eb1f92f31 Use zend_string_release_ex() instread of zend_string_release() in places, where we sure about string persistence. 2018-05-28 16:27:12 +03:00
Nikita Popov
bcc7d46aa4 Merge branch 'PHP-7.2' 2018-02-19 21:46:20 +01:00
Nikita Popov
1b6a9ea584 Merge branch 'PHP-7.1' into PHP-7.2 2018-02-19 21:46:11 +01:00
Nikita Popov
7b3a2d16aa Fix incorrect printf modifiers 2018-02-19 21:44:36 +01:00
Anatol Belski
ec5d9ab82b Reduce variable scope 2018-02-18 19:15:36 +01:00