Skip to content

Commit b9dd30b

Browse files
authored
Merge pull request #97 from tony2001/php74_support
fix build with PHP 7.4
2 parents 3d97ecb + dd6e8bb commit b9dd30b

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

extension/php7/meminfo.c

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,10 @@ PHP_FUNCTION(meminfo_dump)
5858
php_stream_printf(stream TSRMLS_CC, "{\n");
5959

6060
php_stream_printf(stream TSRMLS_CC, " \"header\" : {\n");
61-
php_stream_printf(stream TSRMLS_CC, " \"memory_usage\" : %d,\n", zend_memory_usage(0));
62-
php_stream_printf(stream TSRMLS_CC, " \"memory_usage_real\" : %d,\n", zend_memory_usage(1));
63-
php_stream_printf(stream TSRMLS_CC, " \"peak_memory_usage\" : %d,\n", zend_memory_peak_usage(0));
64-
php_stream_printf(stream TSRMLS_CC, " \"peak_memory_usage_real\" : %d\n", zend_memory_peak_usage(1));
61+
php_stream_printf(stream TSRMLS_CC, " \"memory_usage\" : %zd,\n", zend_memory_usage(0));
62+
php_stream_printf(stream TSRMLS_CC, " \"memory_usage_real\" : %zd,\n", zend_memory_usage(1));
63+
php_stream_printf(stream TSRMLS_CC, " \"peak_memory_usage\" : %zd,\n", zend_memory_peak_usage(0));
64+
php_stream_printf(stream TSRMLS_CC, " \"peak_memory_usage_real\" : %zd\n", zend_memory_peak_usage(1));
6565
php_stream_printf(stream TSRMLS_CC, " },\n");
6666

6767
php_stream_printf(stream TSRMLS_CC, " \"items\": {\n");
@@ -132,7 +132,11 @@ void meminfo_browse_class_static_members(php_stream *stream, HashTable *visited
132132
zend_hash_internal_pointer_reset_ex(CG(class_table), &ce_pos);
133133
while ((class_entry = zend_hash_get_current_data_ptr_ex(CG(class_table), &ce_pos)) != NULL) {
134134

135+
#if PHP_VERSION_ID >= 70400
136+
if (class_entry->default_static_members_count > 0 && CE_STATIC_MEMBERS(class_entry)) {
137+
#else
135138
if (class_entry->static_members_table) {
139+
#endif
136140

137141
HashTable *properties_info = &(class_entry->properties_info);
138142

@@ -142,7 +146,11 @@ void meminfo_browse_class_static_members(php_stream *stream, HashTable *visited
142146

143147
if (prop_info->flags & ZEND_ACC_STATIC) {
144148
snprintf(frame_label, sizeof(frame_label), "<CLASS_STATIC_MEMBER>");
149+
#if PHP_VERSION_ID >= 70400
150+
prop = CE_STATIC_MEMBERS(class_entry) + prop_info->offset;
151+
#else
145152
prop = &class_entry->static_members_table[prop_info->offset];
153+
#endif
146154

147155
zend_unmangle_property_name(prop_info->name, &class_name, &prop_name);
148156

@@ -341,7 +349,6 @@ void meminfo_zval_dump(php_stream * stream, char * frame_label, zend_string * sy
341349

342350
if (Z_TYPE_P(zv) == IS_OBJECT) {
343351
HashTable *properties;
344-
int is_temp;
345352
zend_string * escaped_class_name;
346353

347354
properties = NULL;
@@ -355,15 +362,24 @@ void meminfo_zval_dump(php_stream * stream, char * frame_label, zend_string * sy
355362

356363
php_stream_printf(stream TSRMLS_CC, " \"object_handle\" : \"%d\",\n", Z_OBJ_HANDLE_P(zv));
357364

365+
#if PHP_VERSION_ID >= 70400
366+
properties = zend_get_properties_for(zv, ZEND_PROP_PURPOSE_DEBUG);
367+
#else
368+
int is_temp;
358369
properties = Z_OBJDEBUG_P(zv, is_temp);
370+
#endif
359371

360372
if (properties != NULL) {
361373
meminfo_hash_dump(stream, properties, 1, visited_items, first_element);
362374

375+
#if PHP_VERSION_ID >= 70400
376+
zend_release_properties(properties);
377+
#else
363378
if (is_temp) {
364379
zend_hash_destroy(properties);
365380
efree(properties);
366381
}
382+
#endif
367383
}
368384
} else if (Z_TYPE_P(zv) == IS_ARRAY) {
369385
php_stream_printf(stream TSRMLS_CC, ",\n");

extension/php7/tests/dump-memory_leak.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ meminfo_dump check there's no memory leak
44
<?php
55
require dirname(__FILE__) . '/fixtures/books.php';
66

7-
$rFilePointer = fopen('/dev/null', 'rw');
7+
$rFilePointer = fopen('/dev/null', 'w');
88

99
$arrayTest = [
1010
'itemBool' => true,

0 commit comments

Comments
 (0)