Skip to content

Commit f3d6246

Browse files
Separate test for C variables
1 parent 2c624e4 commit f3d6246

File tree

3 files changed

+34
-22
lines changed

3 files changed

+34
-22
lines changed

ext/ffi/tests/gh11934.phpt

-22
Original file line numberDiff line numberDiff line change
@@ -135,25 +135,6 @@ $target[0] = $source;
135135

136136
var_dump($target[0]);
137137

138-
echo "--- Existing C variables ---\n";
139-
140-
if (PHP_OS_FAMILY === 'Linux') {
141-
$ffi = FFI::cdef(
142-
"int errno;",
143-
"libc.so.6"
144-
);
145-
$ffi->errno = 0;
146-
var_dump($ffi->errno);
147-
$source = $ffi->new('int');
148-
$source->cdata = 31;
149-
$ffi->errno = $source;
150-
var_dump($ffi->errno);
151-
} else {
152-
// Untested on non-Linux due to lack of libc.so.6
153-
var_dump(0);
154-
var_dump(31);
155-
}
156-
157138
?>
158139
--EXPECTF--
159140
--- Primitive types ---
@@ -206,6 +187,3 @@ int(42)
206187
int(123)
207188
--- Array element ---
208189
int(123)
209-
--- Existing C variables ---
210-
int(0)
211-
int(31)

ext/ffi/tests/gh11934b.phpt

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
--TEST--
2+
Feature GH-11934 (Allow to pass CData into C variables)
3+
--EXTENSIONS--
4+
ffi
5+
zend_test
6+
--FILE--
7+
<?php
8+
require_once __DIR__ . '/utils.inc';
9+
$header = <<<HEADER
10+
extern int gh11934b_ffi_var_test_cdata;
11+
HEADER;
12+
13+
if (PHP_OS_FAMILY !== 'Windows') {
14+
$ffi = FFI::cdef($header);
15+
} else {
16+
try {
17+
$ffi = FFI::cdef($header, 'php_zend_test.dll');
18+
} catch (FFI\Exception $ex) {
19+
$ffi = FFI::cdef($header, ffi_get_php_dll_name());
20+
}
21+
}
22+
23+
var_dump($ffi->gh11934b_ffi_var_test_cdata);
24+
$source = $ffi->new('int');
25+
$source->cdata = 31;
26+
$ffi->gh11934b_ffi_var_test_cdata = $source;
27+
var_dump($ffi->gh11934b_ffi_var_test_cdata);
28+
29+
?>
30+
--EXPECT--
31+
int(2)
32+
int(31)

ext/zend_test/test.c

+2
Original file line numberDiff line numberDiff line change
@@ -1108,6 +1108,8 @@ PHP_ZEND_TEST_API void bug_gh9090_void_int_char_var(int i, char *fmt, ...) {
11081108
va_end(args);
11091109
}
11101110

1111+
PHP_ZEND_TEST_API int gh11934b_ffi_var_test_cdata = 2;
1112+
11111113
#ifdef HAVE_COPY_FILE_RANGE
11121114
/**
11131115
* This function allows us to simulate early return of copy_file_range by setting the limit_copy_file_range ini setting.

0 commit comments

Comments
 (0)