#include "zend_builtin_functions.h"
#include "zend_smart_str.h"
+ /* Key used to avoid leaking addresses in ReflectionProperty::getId() */
+ #define REFLECTION_KEY_LEN 16
+ ZEND_BEGIN_MODULE_GLOBALS(reflection)
+ zend_bool key_initialized;
+ unsigned char key[REFLECTION_KEY_LEN];
+ ZEND_END_MODULE_GLOBALS(reflection)
+ ZEND_DECLARE_MODULE_GLOBALS(reflection)
+
+ #define REFLECTION_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(reflection, v)
+
#define reflection_update_property(object, name, value) do { \
- zval member; \
- ZVAL_STR(&member, name); \
- zend_std_write_property(object, &member, value, NULL); \
+ zend_std_write_property(Z_OBJ_P(object), name, value, NULL); \
Z_TRY_DELREF_P(value); \
- zval_ptr_dtor(&member); \
} while (0)
#define reflection_update_property_name(object, value) \