summaryrefslogtreecommitdiff
path: root/Zend/zend_exceptions.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_exceptions.c')
-rw-r--r--Zend/zend_exceptions.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
index 5c3680fa39..14fce64b38 100644
--- a/Zend/zend_exceptions.c
+++ b/Zend/zend_exceptions.c
@@ -13,6 +13,7 @@
| license@zend.com so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Authors: Sterling Hughes <sterling@php.net> |
+ | Marcus Boerger <helly@php.net> |
+----------------------------------------------------------------------+
*/
@@ -46,7 +47,6 @@ ZEND_FUNCTION(exception)
{
char *message = NULL;
long code = 0;
- zval *tmp;
zval *object;
int argc = ZEND_NUM_ARGS(), message_len;
@@ -138,27 +138,19 @@ 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)
+ZEND_API void zend_throw_exception(char *message, long code 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);
+ if (message) {
+ zend_update_property_string(default_exception_ptr, ex, "message", sizeof("message")-1, message TSRMLS_CC);
+ }
+ if (code) {
+ zend_update_property_long(default_exception_ptr, ex, "code", sizeof("code")-1, code TSRMLS_CC);
+ }
EG(exception) = ex;
}