Niels Dossche
b2963e96ee
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-14286 (ffi enum type (when enum has no name) make memory leak)
2024-07-22 17:45:20 +02:00
Niels Dossche
c0de7214aa
Fix GH-14286 (ffi enum type (when enum has no name) make memory leak)
...
For top-level anonymous type definition we never store the declaration anywhere
else nor the type anywhere else.
The declaration keeps owning the type and it goes out of scope.
For anonymous fields this gets handled by the add_anonymous_field code that
removes the type from the declaration.
This patch does something similar in the parsing code when it is
detected we're dealing with an anonymous enum in a top-level declaration.
Closes GH-14839.
2024-07-22 17:44:47 +02:00
Arnaud Le Blanc
bc57c77fa2
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
[ci skip] NEWS for GH-14626
Fix is_zend_ptr() for huge blocks (#14626 )
2024-06-25 15:15:46 +02:00
Arnaud Le Blanc
1ff277dee2
Fix is_zend_ptr() for huge blocks ( #14626 )
...
is_zend_ptr() expected zend_mm_heap.huge_list to be circular, but it's in fact NULL-terminated. It could crash when at least one huge block exists and the ptr did not belong to any block.
2024-06-25 15:14:00 +02:00
Niels Dossche
0e98a05a3d
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-14215: Cannot use FFI::load on CRLF header file with apache2handler
2024-05-14 19:52:19 +02:00
Niels Dossche
ebd1a36670
Fix GH-14215: Cannot use FFI::load on CRLF header file with apache2handler
...
Some modules may reset _fmode, which causes mangling of line endings.
Always be explicit like we do in other places where the native open call
is used.
Closes GH-14218.
2024-05-14 19:49:22 +02:00
Bob Weinand
dbaeb62ab1
Merge branch 'PHP-8.2' of github.com:php/php-src into PHP-8.3
2024-04-02 18:11:55 +02:00
Bob Weinand
e7462bff19
Run one testsuite with observers enabled in CI ( #13869 )
...
Signed-off-by: Bob Weinand <bobwei9@hotmail.com >
2024-04-02 18:11:02 +02:00
Niels Dossche
87c906c33a
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-12905: FFI::new interacts badly with observers
2023-12-19 15:59:35 +01:00
Niels Dossche
c727f29942
Fix GH-12905: FFI::new interacts badly with observers
...
Because these functions are copied and not properly registered (which we
can't), the observer code doesn't add the temporaries on startup.
Add them via a callback during startup.
Closes GH-12906.
2023-12-19 15:59:01 +01:00
Jakub Zelenka
1b8be9acf0
Merge branch 'PHP-8.2' into PHP-8.3
2023-12-15 14:13:41 +00:00
Jakub Zelenka
40ccc8ea7e
Fix GH-9698: stream_wrapper_register crashes with FFI\CData provided as class
...
Closes GH-12926
2023-12-15 14:11:56 +00:00
Dmitry Stogov
adaf726373
Fixed regression introduced by https://github.com/php/php-src/pull/9601
2023-11-22 21:25:15 +03:00
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