Skip to content

Commit 62c6d69

Browse files
committed
Add test instantiating all objects
Intended to find issues in opaque object destructors. Closes GH-6251.
1 parent d96219c commit 62c6d69

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
Try to instantiate all classes without arguments
3+
--FILE--
4+
<?php
5+
6+
foreach (get_declared_classes() as $class) {
7+
try {
8+
new $class;
9+
} catch (Throwable) {}
10+
}
11+
12+
?>
13+
===DONE===
14+
--EXPECT--
15+
===DONE===

ext/gd/gd.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,9 @@ zend_object *php_gd_image_object_create(zend_class_entry *class_type)
199199
static void php_gd_image_object_free(zend_object *intern)
200200
{
201201
php_gd_image_object *img_obj_ptr = php_gd_exgdimage_from_zobj_p(intern);
202-
gdImageDestroy(img_obj_ptr->image);
203-
img_obj_ptr->image = NULL;
204-
202+
if (img_obj_ptr->image) {
203+
gdImageDestroy(img_obj_ptr->image);
204+
}
205205
zend_object_std_dtor(intern);
206206
}
207207

ext/openssl/openssl.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,10 +233,7 @@ static void php_openssl_pkey_free_obj(zend_object *object)
233233
{
234234
php_openssl_pkey_object *key_object = php_openssl_pkey_from_obj(object);
235235

236-
EVP_PKEY *pkey = key_object->pkey;
237-
assert(pkey != NULL);
238-
EVP_PKEY_free(pkey);
239-
236+
EVP_PKEY_free(key_object->pkey);
240237
zend_object_std_dtor(&key_object->std);
241238
}
242239

0 commit comments

Comments
 (0)