diff options
-rw-r--r-- | Zend/zend_default_classes.c | 25 | ||||
-rw-r--r-- | Zend/zend_default_classes.h | 1 | ||||
-rw-r--r-- | Zend/zend_exceptions.c | 25 | ||||
-rw-r--r-- | Zend/zend_exceptions.h | 1 | ||||
-rw-r--r-- | Zend/zend_reflection_api.c | 25 | ||||
-rw-r--r-- | ext/reflection/php_reflection.c | 25 |
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 */ |