|
62 | 62 | called, we cal __call handler.
|
63 | 63 | */
|
64 | 64 |
|
65 |
| -ZEND_API void rebuild_object_properties(zend_object *zobj) /* {{{ */ |
| 65 | +ZEND_API void rebuild_object_properties_internal(zend_object *zobj) /* {{{ */ |
66 | 66 | {
|
67 | 67 | if (!zobj->properties) {
|
68 | 68 | zend_property_info *prop_info;
|
@@ -130,7 +130,7 @@ ZEND_API HashTable *zend_std_build_object_properties_array(zend_object *zobj) /*
|
130 | 130 | ZEND_API HashTable *zend_std_get_properties(zend_object *zobj) /* {{{ */
|
131 | 131 | {
|
132 | 132 | if (!zobj->properties) {
|
133 |
| - rebuild_object_properties(zobj); |
| 133 | + rebuild_object_properties_internal(zobj); |
134 | 134 | }
|
135 | 135 | return zobj->properties;
|
136 | 136 | }
|
@@ -1124,10 +1124,7 @@ found:;
|
1124 | 1124 | }
|
1125 | 1125 |
|
1126 | 1126 | Z_TRY_ADDREF_P(value);
|
1127 |
| - if (!zobj->properties) { |
1128 |
| - rebuild_object_properties(zobj); |
1129 |
| - } |
1130 |
| - variable_ptr = zend_hash_add_new(zobj->properties, name, value); |
| 1127 | + variable_ptr = zend_hash_add_new(zend_std_get_properties_ex(zobj), name, value); |
1131 | 1128 | }
|
1132 | 1129 | }
|
1133 | 1130 |
|
@@ -1312,7 +1309,7 @@ ZEND_API zval *zend_std_get_property_ptr_ptr(zend_object *zobj, zend_string *nam
|
1312 | 1309 | }
|
1313 | 1310 | }
|
1314 | 1311 | if (UNEXPECTED(!zobj->properties)) {
|
1315 |
| - rebuild_object_properties(zobj); |
| 1312 | + rebuild_object_properties_internal(zobj); |
1316 | 1313 | }
|
1317 | 1314 | if (UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) {
|
1318 | 1315 | zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
|
@@ -2028,13 +2025,9 @@ ZEND_API int zend_std_compare_objects(zval *o1, zval *o2) /* {{{ */
|
2028 | 2025 | Z_UNPROTECT_RECURSION_P(o1);
|
2029 | 2026 | return 0;
|
2030 | 2027 | } else {
|
2031 |
| - if (!zobj1->properties) { |
2032 |
| - rebuild_object_properties(zobj1); |
2033 |
| - } |
2034 |
| - if (!zobj2->properties) { |
2035 |
| - rebuild_object_properties(zobj2); |
2036 |
| - } |
2037 |
| - return zend_compare_symbol_tables(zobj1->properties, zobj2->properties); |
| 2028 | + return zend_compare_symbol_tables( |
| 2029 | + zend_std_get_properties_ex(zobj1), |
| 2030 | + zend_std_get_properties_ex(zobj2)); |
2038 | 2031 | }
|
2039 | 2032 | }
|
2040 | 2033 | /* }}} */
|
|
0 commit comments