cvs: php4 /ext/standard assert.c basic_functions.c /ext/standard/tests/assert assert.phpt

From: Date: Mon, 09 Jul 2001 10:20:42 +0000
Subject: cvs: php4 /ext/standard assert.c basic_functions.c /ext/standard/tests/assert assert.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-6128@lists.php.net to get a copy of this message
thies Mon Jul 9 06:20:42 2001 EDT Modified files: /php4/ext/standard assert.c basic_functions.c /php4/ext/standard/tests/assert assert.phpt Log: @ - assert() now accepts the array(&$obj,"methodname") syntax. (Thies) + some cleanups Index: php4/ext/standard/assert.c diff -u php4/ext/standard/assert.c:1.31 php4/ext/standard/assert.c:1.32 --- php4/ext/standard/assert.c:1.31 Mon Jul 9 05:04:19 2001 +++ php4/ext/standard/assert.c Mon Jul 9 06:20:39 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: assert.c,v 1.31 2001/07/09 09:04:19 thies Exp $ */ +/* $Id: assert.c,v 1.32 2001/07/09 10:20:39 thies Exp $ */ /* {{{ includes/startup/misc */ @@ -29,8 +29,7 @@ long bail; long warning; long quiet_eval; - char *default_callback; - char *callback; + zval *callback; } php_assert_globals; #ifdef ZTS @@ -53,23 +52,43 @@ #define SAFE_STRING(s) ((s)?(s):"") -#define ASSERT_ACTIVE 1 -#define ASSERT_CALLBACK 2 -#define ASSERT_BAIL 3 -#define ASSERT_WARNING 4 -#define ASSERT_QUIET_EVAL 5 +enum { + ASSERT_ACTIVE=1, + ASSERT_CALLBACK, + ASSERT_BAIL, + ASSERT_WARNING, + ASSERT_QUIET_EVAL +}; +static PHP_INI_MH(OnChangeCallback) +{ + ASSERTLS_FETCH(); + + if (ASSERT(callback)) { + zval_dtor(ASSERT(callback)); + } else { + MAKE_STD_ZVAL(ASSERT(callback)); + } + + if (new_value) + ZVAL_STRINGL(ASSERT(callback),new_value,new_value_length,1) + else + ZVAL_EMPTY_STRING(ASSERT(callback)) + + return SUCCESS; +} + PHP_INI_BEGIN() STD_PHP_INI_ENTRY("assert.active", "1", PHP_INI_ALL, OnUpdateInt, active, php_assert_globals, assert_globals) STD_PHP_INI_ENTRY("assert.bail", "0", PHP_INI_ALL, OnUpdateInt, bail, php_assert_globals, assert_globals) STD_PHP_INI_ENTRY("assert.warning", "1", PHP_INI_ALL, OnUpdateInt, warning, php_assert_globals, assert_globals) - STD_PHP_INI_ENTRY("assert.callback", NULL, PHP_INI_ALL, OnUpdateString, default_callback, php_assert_globals, assert_globals) + PHP_INI_ENTRY ("assert.callback", NULL, PHP_INI_ALL, OnChangeCallback) STD_PHP_INI_ENTRY("assert.quiet_eval", "0", PHP_INI_ALL, OnUpdateInt, quiet_eval, php_assert_globals, assert_globals) PHP_INI_END() static void php_assert_init_globals(ASSERTLS_D) { - ASSERT(callback) = 0; + ASSERT(callback) = NULL; } PHP_MINIT_FUNCTION(assert) @@ -92,29 +111,12 @@ return SUCCESS; } -PHP_MSHUTDOWN_FUNCTION(assert) -{ - return SUCCESS; -} - -PHP_RINIT_FUNCTION(assert) -{ - ASSERTLS_FETCH(); - - if (ASSERT(callback)) { - efree(ASSERT(callback)); - ASSERT(callback) = NULL; - } - - return SUCCESS; -} - PHP_RSHUTDOWN_FUNCTION(assert) { ASSERTLS_FETCH(); if (ASSERT(callback)) { - efree(ASSERT(callback)); + zval_ptr_dtor(&ASSERT(callback)); ASSERT(callback) = NULL; } @@ -134,10 +136,9 @@ PHP_FUNCTION(assert) { - pval **assertion; + zval **assertion; int val; char *myeval = NULL; - char *cbfunc; char *compiled_string_description; CLS_FETCH(); ASSERTLS_FETCH(); @@ -185,47 +186,27 @@ } if (ASSERT(callback)) { - cbfunc = ASSERT(callback); - } else if (ASSERT(default_callback)) { - cbfunc = ASSERT(default_callback); - } else { - cbfunc = NULL; - } - - if (cbfunc) { - zval *args[5]; + zval *args[4]; zval *retval; int i; uint lineno = zend_get_executed_lineno(ELS_C); char *filename = zend_get_executed_filename(ELS_C); - /* - char *function = get_active_function_name(); - */ MAKE_STD_ZVAL(args[0]); MAKE_STD_ZVAL(args[1]); MAKE_STD_ZVAL(args[2]); - MAKE_STD_ZVAL(args[3]); - /* - MAKE_STD_ZVAL(args[4]); - */ - - ZVAL_STRING(args[0],SAFE_STRING(cbfunc),1); - ZVAL_STRING(args[1],SAFE_STRING(filename),1); - ZVAL_LONG (args[2],lineno); - ZVAL_STRING(args[3],SAFE_STRING(myeval),1); - /* - this is always "assert" so it's useless - args[4]->type = IS_STRING; args[4]->value.str.val = estrdup(SAFE_STRING(function)); args[4]->value.str.len = strlen(args[4]->value.str.val); - */ + + ZVAL_STRING(args[0],SAFE_STRING(filename),1); + ZVAL_LONG (args[1],lineno); + ZVAL_STRING(args[2],SAFE_STRING(myeval),1); MAKE_STD_ZVAL(retval); ZVAL_BOOL(retval,0); /* XXX do we want to check for error here? */ - call_user_function(CG(function_table), NULL, args[0], retval, 3, args+1); + call_user_function(CG(function_table), NULL, ASSERT(callback), retval, 3, args); - for (i = 0; i < 4; i++) { + for (i = 0; i <= 2; i++) { zval_ptr_dtor(&(args[i])); } zval_ptr_dtor(&retval); @@ -252,7 +233,6 @@ { pval **what,**value; int oldint; - char *oldstr; int ac = ZEND_NUM_ARGS(); ASSERTLS_FETCH(); @@ -300,17 +280,14 @@ break; case ASSERT_CALLBACK: - oldstr = ASSERT(callback); - RETVAL_STRING(SAFE_STRING(oldstr),1); - if (ac == 2) { - if (oldstr) { - efree(oldstr); - } - convert_to_string_ex(value); - ASSERT(callback) = estrndup(Z_STRVAL_PP(value), Z_STRLEN_PP(value)); + if (ASSERT(callback)) { + zval_ptr_dtor(&ASSERT(callback)); + } + ASSERT(callback) = *value; + zval_add_ref(value); } - return; + RETURN_TRUE; break; default: Index: php4/ext/standard/basic_functions.c diff -u php4/ext/standard/basic_functions.c:1.356 php4/ext/standard/basic_functions.c:1.357 --- php4/ext/standard/basic_functions.c:1.356 Sun Jul 8 19:28:48 2001 +++ php4/ext/standard/basic_functions.c Mon Jul 9 06:20:40 2001 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.c,v 1.356 2001/07/08 23:28:48 sas Exp $ */ +/* $Id: basic_functions.c,v 1.357 2001/07/09 10:20:40 thies Exp $ */ #include "php.h" #include "php_main.h" @@ -821,7 +821,6 @@ PHP_MSHUTDOWN(regex)(SHUTDOWN_FUNC_ARGS_PASSTHRU); PHP_MSHUTDOWN(browscap)(SHUTDOWN_FUNC_ARGS_PASSTHRU); PHP_MSHUTDOWN(array)(SHUTDOWN_FUNC_ARGS_PASSTHRU); - PHP_MSHUTDOWN(assert)(SHUTDOWN_FUNC_ARGS_PASSTHRU); #ifdef TRANS_SID PHP_MSHUTDOWN(url_scanner_ex)(SHUTDOWN_FUNC_ARGS_PASSTHRU); #endif @@ -866,7 +865,6 @@ PHP_RINIT(filestat)(INIT_FUNC_ARGS_PASSTHRU); PHP_RINIT(syslog)(INIT_FUNC_ARGS_PASSTHRU); - PHP_RINIT(assert)(INIT_FUNC_ARGS_PASSTHRU); PHP_RINIT(dir)(INIT_FUNC_ARGS_PASSTHRU); #ifdef TRANS_SID Index: php4/ext/standard/tests/assert/assert.phpt diff -u php4/ext/standard/tests/assert/assert.phpt:1.1 php4/ext/standard/tests/assert/assert.phpt:1.2 --- php4/ext/standard/tests/assert/assert.phpt:1.1 Mon Jul 9 05:08:14 2001 +++ php4/ext/standard/tests/assert/assert.phpt Mon Jul 9 06:20:41 2001 @@ -4,18 +4,36 @@ --GET-- --FILE-- <? +function a($file,$line,$myev) +{ + echo "assertion failed $line,\"$myev\"\n"; +} + +class a +{ + function assert($file,$line,$myev) + { + echo "class assertion failed $line,\"$myev\"\n"; + } +} + assert_options(ASSERT_ACTIVE,1); -assert_options(ASSERT_CALLBACK,"a"); assert_options(ASSERT_QUIET_EVAL,1); assert_options(ASSERT_WARNING,0); -assert_options(ASSERT_BAIL,1); -function a($file,$line,$myev) -{ echo "assertion failed $line,\"$myev\"\n"; -} - $a = 0; + +assert_options(ASSERT_CALLBACK,"a"); +assert('$a != 0'); + +assert_options(ASSERT_CALLBACK,array("a","assert")); +assert('$a != 0'); + +$obj = new a(); +assert_options(ASSERT_CALLBACK,array(&$obj,"assert")); assert('$a != 0'); ?> --EXPECT-- -assertion failed 13,"$a != 0" +assertion failed 22,"$a != 0" +class assertion failed 25,"$a != 0" +class assertion failed 29,"$a != 0"

« previous php.cvs (#6128) next »