Skip to content

Commit 68584b5

Browse files
committed
Test memleak when FFI::new() or FFI::type() is called as instance methods
1 parent 5c26258 commit 68584b5

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

ext/ffi/tests/017.phpt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,20 @@ ffi
66
ffi.enable=1
77
--FILE--
88
<?php
9+
$ffi = FFI::cdef();
10+
911
try {
10-
var_dump(FFI::new("struct X {void x();}"));
12+
var_dump($ffi->new("struct X {void x();}"));
1113
} catch (Throwable $e) {
1214
echo get_class($e) . ": " . $e->getMessage()."\n";
1315
}
1416
try {
15-
var_dump(FFI::new("struct X {struct X x;}"));
17+
var_dump($ffi->new("struct X {struct X x;}"));
1618
} catch (Throwable $e) {
1719
echo get_class($e) . ": " . $e->getMessage()."\n";
1820
}
1921
try {
20-
var_dump(FFI::new("struct X {struct X *ptr;}"));
22+
var_dump($ffi->new("struct X {struct X *ptr;}"));
2123
} catch (Throwable $e) {
2224
echo get_class($e) . ": " . $e->getMessage()."\n";
2325
}

ext/ffi/tests/021.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ffi.enable=1
77
--FILE--
88
<?php
99
function test($size, $type) {
10-
if (FFI::sizeof(FFI::new($type)) !== $size) {
10+
if (FFI::sizeof(FFI::cdef()->new($type)) !== $size) {
1111
echo "FAIL: sizeof($type) != $size\n";
1212
}
1313
}

ext/ffi/tests/046.phpt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,28 @@ ffi
66
ffi.enable=1
77
--FILE--
88
<?php
9-
$x = FFI::type("uint8_t");
9+
$ffi = FFI::cdef();
10+
11+
$x = $ffi->type("uint8_t");
1012
var_dump($x->getKind() === $x::TYPE_UINT8);
1113
var_dump($x->getSize());
1214
var_dump($x->getAlignment());
1315

14-
$x = FFI::type("enum __attribute__((packed)) {a2, b2}");
16+
$x = $ffi->type("enum __attribute__((packed)) {a2, b2}");
1517
var_dump($x->getKind() === $x::TYPE_ENUM);
1618
var_dump($x->getEnumKind() === $x::TYPE_UINT8);
1719

18-
$x = FFI::type("char[5]");
20+
$x = $ffi->type("char[5]");
1921
var_dump($x->getKind() === $x::TYPE_ARRAY);
2022
var_dump($x->getSize());
2123
var_dump($x->getArrayElementType()->getKind() === $x::TYPE_CHAR);
2224
var_dump($x->getArrayLength());
2325

24-
$x = FFI::type("void*");
26+
$x = $ffi->type("void*");
2527
var_dump($x->getKind() === $x::TYPE_POINTER);
2628
var_dump($x->getPointerType()->getKind() === $x::TYPE_VOID);
2729

28-
$x = FFI::type("struct {double x; double y;}");
30+
$x = $ffi->type("struct {double x; double y;}");
2931
var_dump($x->getKind() === $x::TYPE_STRUCT);
3032
var_dump(($x->getAttributes() & $x::ATTR_UNION) != 0);
3133
var_dump($x->getStructFieldNames());
@@ -34,7 +36,7 @@ var_dump($x->getStructFieldOffset("y"));
3436
var_dump($x->getStructFieldType("x")->getKind() == $x::TYPE_DOUBLE);
3537
var_dump($x->getStructFieldType("y")->getKind() == $x::TYPE_DOUBLE);
3638

37-
$x = FFI::type("union {double x; double y;}");
39+
$x = $ffi->type("union {double x; double y;}");
3840
var_dump($x->getKind() === $x::TYPE_STRUCT);
3941
var_dump(($x->getAttributes() & $x::ATTR_UNION) != 0);
4042
var_dump($x->getStructFieldNames());
@@ -43,7 +45,7 @@ var_dump($x->getStructFieldOffset("y"));
4345
var_dump($x->getStructFieldType("x")->getKind() == $x::TYPE_DOUBLE);
4446
var_dump($x->getStructFieldType("y")->getKind() == $x::TYPE_DOUBLE);
4547

46-
$x = FFI::type("void (*)(double,int32_t)");
48+
$x = $ffi->type("void (*)(double,int32_t)");
4749
var_dump($x->getKind() === $x::TYPE_POINTER);
4850
var_dump($x->getPointerType()->getKind() === $x::TYPE_FUNC);
4951
var_dump($x->getPointerType()->getFuncReturnType()->getKind() === $x::TYPE_VOID);

0 commit comments

Comments
 (0)