Niels Dossche
43064cae94
Fix FFI tests on 8.3+
2023-10-28 16:28:43 +02:00
Arnaud Le Blanc
198f613401
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
[ci skip] NEWS
[ci skip] NEWS
Fix segfault caused by weak references to FFI objects (#12488 )
2023-10-28 15:05:55 +02:00
Arnaud Le Blanc
7a617ee223
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
[ci skip] NEWS
Fix segfault caused by weak references to FFI objects (#12488 )
2023-10-28 15:03:17 +02:00
sji
04b35a44ce
Fix segfault caused by weak references to FFI objects ( #12488 )
...
Thank you!
2023-10-28 14:59:06 +02:00
Niels Dossche
0b9702c9ed
Implement GH-11934: Allow to pass CData into struct and/or union fields
...
Co-authored-by: KapitanOczywisty <44417092+KapitanOczywisty@users.noreply.github.com >
Closes GH-11935.
2023-08-29 17:01:10 +02:00
Ilija Tovilo
84cb42e0f1
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix leaking definitions on FFI::cdef()->new()
2023-07-21 10:43:13 +02:00
Ilija Tovilo
88fab26365
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix leaking definitions on FFI::cdef()->new()
2023-07-21 10:42:42 +02:00
Ilija Tovilo
11d6bea98a
Fix leaking definitions on FFI::cdef()->new()
...
Previously, FFI_G(symbols) and FFI_G(tags) were never cleaned up when calling
new on an existing object. However, if cdef() is called without parameters these
globals are NULL and might be created when new() creates new definitions. These
would then be discarded without freeing them.
Closes GH-11751
2023-07-21 10:42:19 +02:00
Máté Kocsis
4acf0084dc
Deprecate calling FFI::cast(), FFI::new(), and FFI::type() statically
2023-07-18 12:59:21 +02:00
Ilija Tovilo
50f58c8923
Add ASAN XLEAK support
...
Only disable LSAN instead of skipping the test. This way we can still detect
memory issues which is arguably more important anyway.
Closes GH-10996
2023-04-03 08:02:19 +02:00
Ilija Tovilo
f1333bc9fe
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Reset EG(trampoline).op_array.last_var that FFI may modify
2023-03-27 23:00:12 +02:00
Ilija Tovilo
69c57bea3d
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Reset EG(trampoline).op_array.last_var that FFI may modify
2023-03-27 22:59:58 +02:00
Ilija Tovilo
4e0bd03681
Reset EG(trampoline).op_array.last_var that FFI may modify
...
Closes GH-10916
2023-03-27 22:59:00 +02:00
Dmitry Stogov
851e4623f5
Make C functions returning "void" to return PHP "null"
...
In PHP-2.0 and below we by mistake returned "obcect(FFI\CData:void)#2 (0) {}".
We decided not to fix this in PHP-2.0 and below to aboid BC breaks.
2023-02-13 22:42:39 +03:00
Dmitry Stogov
2abb5850ba
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix assertion failure when var_dump'ing void FFI result (#10568 )
2023-02-13 22:38:52 +03:00
Dmitry Stogov
cec528d06b
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix assertion failure when var_dump'ing void FFI result (#10568 )
2023-02-13 22:38:43 +03:00
Niels Dossche
1a5fc6e1a3
Fix assertion failure when var_dump'ing void FFI result ( #10568 )
2023-02-13 22:38:28 +03:00
Tyson Andre
ab87283118
Merge branch 'PHP-8.2'
2023-02-03 09:23:48 -05:00
Tyson Andre
e3f04ddb0b
Merge branch 'PHP-8.1' into PHP-8.2
2023-02-03 09:18:03 -05:00
Tyson Andre
fe2dc2b481
Avoid crash for reset/end/next/prev() on ffi classes ( #9711 )
...
(And any PECLs returning `zend_empty_array` in the handler->get_properties
overrides)
Closes GH-9697
This is similar to the fix used in d9651a9419
for array_walk.
This should make it safer for php-src (and PECLs, long-term) to return
the empty immutable array in `handler->get_properties` to avoid wasting memory.
See https://github.com/php/php-src/issues/9697#issuecomment-1273613175
The only possible internal iterator position for the empty array is at the end
of the empty array (nInternalPointer=0).
The `zend_hash*del*` helpers will always set nInternalPointer to 0 when an
array becomes empty,
regardless of previous insertions/deletions/updates to the array.
2023-02-03 09:17:33 -05:00
Dmitry Stogov
4cd929877e
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix incorrect bitshifting and masking in ffi bitfield (#10403 )
2023-01-24 09:15:44 +03:00
Dmitry Stogov
d5b307c434
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix incorrect bitshifting and masking in ffi bitfield (#10403 )
2023-01-24 09:15:27 +03:00
Niels Dossche
560ca9c7ae
Fix incorrect bitshifting and masking in ffi bitfield ( #10403 )
...
When a uint8_t is bitshifted to the left, it is actually promoted to an
int. For the current code this has the effect of a wrong sign-extension,
and the result will also wrongly become zero when insert_pos >= 32.
Fix this by adding an explicit cast.
Furthermore, the partial prefix byte mask was computed incorrectly: the
byte is already shifted so the mask should not account for the shift.
2023-01-24 09:15:03 +03:00
Thomas PIRAS
289822d3ad
Add a proper error message for ffi load
...
We call dlerror when a library failed to load properly.
Closes GH-9913.
2022-11-28 16:19:54 +01:00
Ilija Tovilo
86af42be1b
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Migrate i386 to GitHub actions
2022-11-03 14:40:35 +01:00
Ilija Tovilo
b08901b63f
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Migrate i386 to GitHub actions
2022-11-03 14:37:59 +01:00
Ilija Tovilo
ed1e703716
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Migrate i386 to GitHub actions
2022-11-03 14:37:17 +01:00
Ilija Tovilo
75970077b0
Migrate i386 to GitHub actions
...
Closes GH-9856
2022-11-03 14:34:54 +01:00
Dmitry Stogov
4650a8c710
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix GH-9697: array_walk($ffiInstance, function () {}) crashes due to expecting mutable array
2022-10-10 11:25:42 +03:00
Dmitry Stogov
626e909877
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix GH-9697: array_walk($ffiInstance, function () {}) crashes due to expecting mutable array
2022-10-10 11:25:33 +03:00
Dmitry Stogov
fa2c519544
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix GH-9697: array_walk($ffiInstance, function () {}) crashes due to expecting mutable array
2022-10-10 11:25:23 +03:00
Dmitry Stogov
d9651a9419
Fix GH-9697: array_walk($ffiInstance, function () {}) crashes due to expecting mutable array
2022-10-10 11:21:05 +03:00
Ilija Tovilo
d4ad9b7289
Throw in FFI::addr() when referencing temporary pointer
...
Closes GH-9601
2022-09-26 23:15:38 +02:00
Arnaud Le Blanc
0a9a8a90ae
Fix GH-9139: Allow FFI in opcache.preload when opcache.preload_user=root ( #9473 )
2022-09-09 11:00:57 +02:00
Dmitry Stogov
04d5faed23
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix order of checks to throw exception with better message
2022-08-11 09:32:18 +03:00
Dmitry Stogov
18183ff9c7
Fix order of checks to throw exception with better message
...
This clarifies the "->cdata" meaning.
2022-08-11 09:30:47 +03:00
Adam Saponara
8cf9c2f200
Fix GH-9090: Support assigning function pointers in FFI
...
Closes GH-9107.
2022-07-27 10:42:25 +02:00
Bob Weinand
ff6b813557
Merge branch 'PHP-8.0' into PHP-8.1
2022-04-24 18:04:37 +02:00
Bob Weinand
a74b865123
Add missing SKIPIF for new ext/ffi test
2022-04-24 18:02:46 +02:00
Bob Weinand
01b91cb3b1
Merge branch 'PHP-8.0' into PHP-8.1
2022-04-24 14:53:51 +02:00
Bob Weinand
2397e7685e
Fix GH-8433: Assigning function pointers to structs in FFI leaks memory
2022-04-24 14:53:18 +02:00
Christoph M. Becker
1632ebb542
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix GH-7867: FFI::cast() from pointer to array is broken
2022-01-10 23:59:55 +01:00
Christoph M. Becker
703cac33db
Fix GH-7867: FFI::cast() from pointer to array is broken
...
Casting from pointer to array is special, so we must not fall back to
the general FFI casting. There is a particular issue regarding the
size comparison, namely that the pointer size is always 8 for 64bit
architectures, but the size of an array is determined by its
declaration, so as is casting a pointer to an array with more than 8
elements would fail, but casting to an array with less than 9 elements
succeeds, but the internal pointer would point to some arbitrary
memory.
We fix this by properly supporting the cast. An alternative would be
to deny this kind of cast generally, since it is not necessarily safe.
However, FFI isn't necessarily safe anyway.
We also check pointer/array type compatibility when casting.
Co-authored-by: Dmitry Stogov <dmitry@zend.com >
Closes GH-7876.
2022-01-10 23:58:39 +01:00
Dmitry Stogov
b4a5bc4a62
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed error message
2021-09-15 15:01:08 +03:00
Dmitry Stogov
23327bf4b3
Fixed error message
2021-09-15 15:00:49 +03:00
Dmitry Stogov
6f65a1b263
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed error message
2021-09-15 14:59:14 +03:00
Dmitry Stogov
de20a89b06
Fixed error message
2021-09-15 14:58:55 +03:00
Dmitry Stogov
46c09a34d5
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed bug #79576 ("TYPE *" shows unhelpful message when type is not defined)
2021-09-15 14:53:00 +03:00
Dmitry Stogov
594cba7f8e
Merge branch 'PHP-7.4' into PHP-8.0
...
* PHP-7.4:
Fixed bug #79576 ("TYPE *" shows unhelpful message when type is not defined)
2021-09-15 14:49:35 +03:00
Dmitry Stogov
0badc7de96
Fixed bug #79576 ("TYPE *" shows unhelpful message when type is not defined)
2021-09-15 14:48:33 +03:00