summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xext/standard/basic_functions.c5
-rw-r--r--ext/standard/basic_functions.h1
-rw-r--r--ext/standard/incomplete_class.c11
-rw-r--r--ext/standard/php_incomplete_class.h9
4 files changed, 11 insertions, 15 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index b2b30a05e4..9eeed75b04 100755
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -108,8 +108,6 @@ PHPAPI php_basic_globals basic_globals;
#include "streamsfuncs.h"
#include "basic_functions_arginfo.h"
-static zend_class_entry *incomplete_class_entry = NULL;
-
typedef struct _user_tick_function_entry {
zval *arguments;
int arg_count;
@@ -220,7 +218,6 @@ static void basic_globals_ctor(php_basic_globals *basic_globals_p) /* {{{ */
memset(&BG(mblen_state), 0, sizeof(BG(mblen_state)));
#endif
- BG(incomplete_class) = incomplete_class_entry;
BG(page_uid) = -1;
BG(page_gid) = -1;
}
@@ -285,7 +282,7 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */
#endif
#endif
- BG(incomplete_class) = incomplete_class_entry = php_create_incomplete_class();
+ php_register_incomplete_class();
REGISTER_LONG_CONSTANT("CONNECTION_ABORTED", PHP_CONNECTION_ABORTED, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("CONNECTION_NORMAL", PHP_CONNECTION_NORMAL, CONST_CS | CONST_PERSISTENT);
diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h
index 52db18ce85..8308904e50 100644
--- a/ext/standard/basic_functions.h
+++ b/ext/standard/basic_functions.h
@@ -97,7 +97,6 @@ typedef struct _php_basic_globals {
char *syslog_device;
/* var.c */
- zend_class_entry *incomplete_class;
unsigned serialize_lock; /* whether to use the locally supplied var_hash instead (__sleep/__wakeup) */
struct {
struct php_serialize_data *data;
diff --git a/ext/standard/incomplete_class.c b/ext/standard/incomplete_class.c
index 34edaa0e23..2c847fd4fe 100644
--- a/ext/standard/incomplete_class.c
+++ b/ext/standard/incomplete_class.c
@@ -26,6 +26,7 @@
"unserialize() gets called or provide an autoloader " \
"to load the class definition"
+PHPAPI zend_class_entry *php_ce_incomplete_class;
static zend_object_handlers php_incomplete_object_handlers;
/* {{{ incomplete_class_message */
@@ -104,9 +105,9 @@ static zend_object *php_create_incomplete_object(zend_class_entry *class_type)
return object;
}
-PHPAPI zend_class_entry *php_create_incomplete_class(void)
+PHPAPI void php_register_incomplete_class(void)
{
- zend_class_entry incomplete_class, *incomplete_class_entry;
+ zend_class_entry incomplete_class;
INIT_CLASS_ENTRY(incomplete_class, INCOMPLETE_CLASS, NULL);
@@ -120,10 +121,8 @@ PHPAPI zend_class_entry *php_create_incomplete_class(void)
php_incomplete_object_handlers.get_property_ptr_ptr = incomplete_class_get_property_ptr_ptr;
php_incomplete_object_handlers.get_method = incomplete_class_get_method;
- incomplete_class_entry = zend_register_internal_class(&incomplete_class);
- incomplete_class_entry->ce_flags |= ZEND_ACC_FINAL;
-
- return incomplete_class_entry;
+ php_ce_incomplete_class = zend_register_internal_class(&incomplete_class);
+ php_ce_incomplete_class->ce_flags |= ZEND_ACC_FINAL;
}
/* }}} */
diff --git a/ext/standard/php_incomplete_class.h b/ext/standard/php_incomplete_class.h
index 03bd1daaca..c2cda0d6f0 100644
--- a/ext/standard/php_incomplete_class.h
+++ b/ext/standard/php_incomplete_class.h
@@ -19,12 +19,13 @@
#include "ext/standard/basic_functions.h"
-#define PHP_IC_ENTRY \
- BG(incomplete_class)
+extern PHPAPI zend_class_entry *php_ce_incomplete_class;
+
+#define PHP_IC_ENTRY php_ce_incomplete_class
#define PHP_SET_CLASS_ATTRIBUTES(struc) \
/* OBJECTS_FIXME: Fix for new object model */ \
- if (Z_OBJCE_P(struc) == BG(incomplete_class)) { \
+ if (Z_OBJCE_P(struc) == php_ce_incomplete_class) { \
class_name = php_lookup_class_name(Z_OBJ_P(struc)); \
if (!class_name) { \
class_name = zend_string_init(INCOMPLETE_CLASS, sizeof(INCOMPLETE_CLASS) - 1, 0); \
@@ -48,7 +49,7 @@
extern "C" {
#endif
-PHPAPI zend_class_entry *php_create_incomplete_class(void);
+PHPAPI void php_register_incomplete_class(void);
PHPAPI zend_string *php_lookup_class_name(zend_object *object);
PHPAPI void php_store_class_name(zval *object, const char *name, size_t len);