summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_default_classes.c25
-rw-r--r--Zend/zend_default_classes.h1
-rw-r--r--Zend/zend_exceptions.c25
-rw-r--r--Zend/zend_exceptions.h1
-rw-r--r--Zend/zend_reflection_api.c25
-rw-r--r--ext/reflection/php_reflection.c25
6 files changed, 54 insertions, 48 deletions
diff --git a/Zend/zend_default_classes.c b/Zend/zend_default_classes.c
index 90b92bd101..c5e99943bc 100644
--- a/Zend/zend_default_classes.c
+++ b/Zend/zend_default_classes.c
@@ -127,6 +127,31 @@ ZEND_API zend_class_entry *zend_exception_get_default(void)
return default_exception_ptr;
}
+ZEND_API void zend_throw_exception(char *message, int duplicate TSRMLS_DC)
+{
+ zval *ex;
+ zval *tmp;
+ HashTable *properties;
+
+ MAKE_STD_ZVAL(ex);
+ object_init_ex(ex, default_exception_ptr);
+ properties = Z_OBJPROP_P(ex);
+
+ MAKE_STD_ZVAL(tmp);
+ ZVAL_STRING(tmp, message, duplicate);
+ zend_hash_update(properties, "message", sizeof("message"), (void **) &tmp, sizeof(zval *), NULL);
+
+ MAKE_STD_ZVAL(tmp);
+ ZVAL_STRING(tmp, zend_get_executed_filename(TSRMLS_C), 1);
+ zend_hash_update(properties, "file", sizeof("file"), (void **) &tmp, sizeof(zval *), NULL);
+
+ MAKE_STD_ZVAL(tmp);
+ ZVAL_LONG(tmp, zend_get_executed_lineno(TSRMLS_C));
+ zend_hash_update(properties, "line", sizeof("line"), (void **) &tmp, sizeof(zval *), NULL);
+
+ EG(exception) = ex;
+}
+
ZEND_API void zend_register_default_classes(TSRMLS_D)
{
zend_register_default_exception(TSRMLS_C);
diff --git a/Zend/zend_default_classes.h b/Zend/zend_default_classes.h
index ceba1e2e33..1c64d95921 100644
--- a/Zend/zend_default_classes.h
+++ b/Zend/zend_default_classes.h
@@ -24,6 +24,7 @@
BEGIN_EXTERN_C()
ZEND_API zend_class_entry *zend_exception_get_default(void);
+ZEND_API void zend_throw_exception(char *message, int duplicate TSRMLS_DC);
ZEND_API void zend_register_default_classes(TSRMLS_D);
END_EXTERN_C()
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
index 90b92bd101..c5e99943bc 100644
--- a/Zend/zend_exceptions.c
+++ b/Zend/zend_exceptions.c
@@ -127,6 +127,31 @@ ZEND_API zend_class_entry *zend_exception_get_default(void)
return default_exception_ptr;
}
+ZEND_API void zend_throw_exception(char *message, int duplicate TSRMLS_DC)
+{
+ zval *ex;
+ zval *tmp;
+ HashTable *properties;
+
+ MAKE_STD_ZVAL(ex);
+ object_init_ex(ex, default_exception_ptr);
+ properties = Z_OBJPROP_P(ex);
+
+ MAKE_STD_ZVAL(tmp);
+ ZVAL_STRING(tmp, message, duplicate);
+ zend_hash_update(properties, "message", sizeof("message"), (void **) &tmp, sizeof(zval *), NULL);
+
+ MAKE_STD_ZVAL(tmp);
+ ZVAL_STRING(tmp, zend_get_executed_filename(TSRMLS_C), 1);
+ zend_hash_update(properties, "file", sizeof("file"), (void **) &tmp, sizeof(zval *), NULL);
+
+ MAKE_STD_ZVAL(tmp);
+ ZVAL_LONG(tmp, zend_get_executed_lineno(TSRMLS_C));
+ zend_hash_update(properties, "line", sizeof("line"), (void **) &tmp, sizeof(zval *), NULL);
+
+ EG(exception) = ex;
+}
+
ZEND_API void zend_register_default_classes(TSRMLS_D)
{
zend_register_default_exception(TSRMLS_C);
diff --git a/Zend/zend_exceptions.h b/Zend/zend_exceptions.h
index ceba1e2e33..1c64d95921 100644
--- a/Zend/zend_exceptions.h
+++ b/Zend/zend_exceptions.h
@@ -24,6 +24,7 @@
BEGIN_EXTERN_C()
ZEND_API zend_class_entry *zend_exception_get_default(void);
+ZEND_API void zend_throw_exception(char *message, int duplicate TSRMLS_DC);
ZEND_API void zend_register_default_classes(TSRMLS_D);
END_EXTERN_C()
diff --git a/Zend/zend_reflection_api.c b/Zend/zend_reflection_api.c
index 81d9b4d72b..6664e347ba 100644
--- a/Zend/zend_reflection_api.c
+++ b/Zend/zend_reflection_api.c
@@ -47,31 +47,8 @@
/* Exception throwing macro */
#define _DO_THROW(msg) \
- { \
- extern zend_class_entry *default_exception_ptr; \
- zval *ex; \
- zval *tmp; \
- MAKE_STD_ZVAL(ex); \
- object_init_ex(ex, default_exception_ptr); \
- \
- MAKE_STD_ZVAL(tmp); \
- ZVAL_STRING(tmp, (msg), 1); \
- zend_hash_update(Z_OBJPROP_P(ex), "message", sizeof("message"), (void **) &tmp, sizeof(zval *), NULL); \
- tmp = NULL; \
- \
- MAKE_STD_ZVAL(tmp); \
- ZVAL_STRING(tmp, zend_get_executed_filename(TSRMLS_C), 1); \
- zend_hash_update(Z_OBJPROP_P(ex), "file", sizeof("file"), (void **) &tmp, sizeof(zval *), NULL); \
- tmp = NULL; \
- \
- MAKE_STD_ZVAL(tmp); \
- ZVAL_LONG(tmp, zend_get_executed_lineno(TSRMLS_C)); \
- zend_hash_update(Z_OBJPROP_P(ex), "line", sizeof("line"), (void **) &tmp, sizeof(zval *), NULL); \
- tmp = NULL; \
- \
- EG(exception) = ex; \
+ zend_throw_exception(msg, 1 TSRMLS_CC); \
return; \
- }
/* Smart string macros */
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 81d9b4d72b..6664e347ba 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -47,31 +47,8 @@
/* Exception throwing macro */
#define _DO_THROW(msg) \
- { \
- extern zend_class_entry *default_exception_ptr; \
- zval *ex; \
- zval *tmp; \
- MAKE_STD_ZVAL(ex); \
- object_init_ex(ex, default_exception_ptr); \
- \
- MAKE_STD_ZVAL(tmp); \
- ZVAL_STRING(tmp, (msg), 1); \
- zend_hash_update(Z_OBJPROP_P(ex), "message", sizeof("message"), (void **) &tmp, sizeof(zval *), NULL); \
- tmp = NULL; \
- \
- MAKE_STD_ZVAL(tmp); \
- ZVAL_STRING(tmp, zend_get_executed_filename(TSRMLS_C), 1); \
- zend_hash_update(Z_OBJPROP_P(ex), "file", sizeof("file"), (void **) &tmp, sizeof(zval *), NULL); \
- tmp = NULL; \
- \
- MAKE_STD_ZVAL(tmp); \
- ZVAL_LONG(tmp, zend_get_executed_lineno(TSRMLS_C)); \
- zend_hash_update(Z_OBJPROP_P(ex), "line", sizeof("line"), (void **) &tmp, sizeof(zval *), NULL); \
- tmp = NULL; \
- \
- EG(exception) = ex; \
+ zend_throw_exception(msg, 1 TSRMLS_CC); \
return; \
- }
/* Smart string macros */