diff options
author | Marcus Boerger <helly@php.net> | 2003-08-23 14:22:28 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2003-08-23 14:22:28 +0000 |
commit | 43334207abd34dcb444fce526d11481577b356ce (patch) | |
tree | ac0a02db85589b1db1bd1bed99f1290976848dfa /Zend | |
parent | 6b92fbdef95e27395bf248a40a42041a74c35017 (diff) | |
download | php-git-43334207abd34dcb444fce526d11481577b356ce.tar.gz |
Make exception code more robust
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/zend_default_classes.c | 27 | ||||
-rw-r--r-- | Zend/zend_exceptions.c | 27 |
2 files changed, 22 insertions, 32 deletions
diff --git a/Zend/zend_default_classes.c b/Zend/zend_default_classes.c index c5e99943bc..b4fd8772f9 100644 --- a/Zend/zend_default_classes.c +++ b/Zend/zend_default_classes.c @@ -26,34 +26,29 @@ zend_class_entry *default_exception_ptr; ZEND_FUNCTION(exception) { - zval **message; - zval **code; + char *message = NULL; + long code = 0; zval *tmp; zval *object; - int argc = ZEND_NUM_ARGS(); + int argc = ZEND_NUM_ARGS(), message_len; - if (zend_get_parameters_ex(argc, &message, &code) == FAILURE) { - ZEND_WRONG_PARAM_COUNT(); + if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, argc TSRMLS_CC, "|sl", &message, &message_len, &code) == FAILURE) { + zend_error(E_CORE_ERROR, "Wrong parameter count for exception([string $exception [, long $code ]])"); } object = getThis(); - if (argc > 0) { - convert_to_string_ex(message); - zval_add_ref(message); - zend_hash_update(Z_OBJPROP_P(object), "message", sizeof("message"), (void **) message, sizeof(zval *), NULL); - } + MAKE_STD_ZVAL(tmp); + ZVAL_STRING(tmp, message ? message : "Unknown exception", 1); + zend_hash_update(Z_OBJPROP_P(object), "message", sizeof("message"), (void **) &tmp, sizeof(zval *), NULL); - if (argc > 1) { - convert_to_long_ex(code); - zval_add_ref(code); - zend_hash_update(Z_OBJPROP_P(object), "code", sizeof("code"), (void **) code, sizeof(zval *), NULL); - } + MAKE_STD_ZVAL(tmp); + ZVAL_LONG(tmp, code); + zend_hash_update(Z_OBJPROP_P(object), "code", sizeof("code"), (void **) &tmp, sizeof(zval *), NULL); MAKE_STD_ZVAL(tmp); ZVAL_STRING(tmp, zend_get_executed_filename(TSRMLS_C), 1); zend_hash_update(Z_OBJPROP_P(object), "file", sizeof("file"), (void **) &tmp, sizeof(zval *), NULL); - tmp = NULL; MAKE_STD_ZVAL(tmp); ZVAL_LONG(tmp, zend_get_executed_lineno(TSRMLS_C)); diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index c5e99943bc..b4fd8772f9 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -26,34 +26,29 @@ zend_class_entry *default_exception_ptr; ZEND_FUNCTION(exception) { - zval **message; - zval **code; + char *message = NULL; + long code = 0; zval *tmp; zval *object; - int argc = ZEND_NUM_ARGS(); + int argc = ZEND_NUM_ARGS(), message_len; - if (zend_get_parameters_ex(argc, &message, &code) == FAILURE) { - ZEND_WRONG_PARAM_COUNT(); + if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, argc TSRMLS_CC, "|sl", &message, &message_len, &code) == FAILURE) { + zend_error(E_CORE_ERROR, "Wrong parameter count for exception([string $exception [, long $code ]])"); } object = getThis(); - if (argc > 0) { - convert_to_string_ex(message); - zval_add_ref(message); - zend_hash_update(Z_OBJPROP_P(object), "message", sizeof("message"), (void **) message, sizeof(zval *), NULL); - } + MAKE_STD_ZVAL(tmp); + ZVAL_STRING(tmp, message ? message : "Unknown exception", 1); + zend_hash_update(Z_OBJPROP_P(object), "message", sizeof("message"), (void **) &tmp, sizeof(zval *), NULL); - if (argc > 1) { - convert_to_long_ex(code); - zval_add_ref(code); - zend_hash_update(Z_OBJPROP_P(object), "code", sizeof("code"), (void **) code, sizeof(zval *), NULL); - } + MAKE_STD_ZVAL(tmp); + ZVAL_LONG(tmp, code); + zend_hash_update(Z_OBJPROP_P(object), "code", sizeof("code"), (void **) &tmp, sizeof(zval *), NULL); MAKE_STD_ZVAL(tmp); ZVAL_STRING(tmp, zend_get_executed_filename(TSRMLS_C), 1); zend_hash_update(Z_OBJPROP_P(object), "file", sizeof("file"), (void **) &tmp, sizeof(zval *), NULL); - tmp = NULL; MAKE_STD_ZVAL(tmp); ZVAL_LONG(tmp, zend_get_executed_lineno(TSRMLS_C)); |