diff options
| author | Etienne Kneuss <colder@php.net> | 2008-11-19 01:59:07 +0000 |
|---|---|---|
| committer | Etienne Kneuss <colder@php.net> | 2008-11-19 01:59:07 +0000 |
| commit | 8251921307204713eda475c4f44dcab07c17fd50 (patch) | |
| tree | eafd5ac7db29b29d63286e05d7d71f86abf40adf /ext/sqlite3/sqlite3.c | |
| parent | d3b716d60467b73b58e956fe0b7ceab69a1d8c60 (diff) | |
| download | php-git-8251921307204713eda475c4f44dcab07c17fd50.tar.gz | |
Fix #46241 (stacked error_handlers, error_handling in general)
Diffstat (limited to 'ext/sqlite3/sqlite3.c')
| -rw-r--r-- | ext/sqlite3/sqlite3.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 21f1870ca1..c617582395 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -1207,12 +1207,14 @@ PHP_METHOD(sqlite3stmt, __construct) zval *db_zval; char *sql; int sql_len, errcode; + zend_error_handling error_handling; stmt_obj = (php_sqlite3_stmt *)zend_object_store_get_object(object TSRMLS_CC); - zend_replace_error_handling(EH_THROW, NULL, NULL TSRMLS_CC); + zend_replace_error_handling(EH_THROW, NULL, &error_handling TSRMLS_CC); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os", &db_zval, php_sqlite3_sc_entry, &sql, &sql_len) == FAILURE) { + zend_restore_error_handling(&error_handling TSRMLS_CC); return; } @@ -1220,6 +1222,7 @@ PHP_METHOD(sqlite3stmt, __construct) SQLITE3_CHECK_INITIALIZED(db_obj->initialised, SQLite3) + zend_restore_error_handling(&error_handling TSRMLS_CC); if (!sql_len) { RETURN_FALSE; } @@ -1407,11 +1410,14 @@ PHP_METHOD(sqlite3result, __construct) php_sqlite3_result *result_obj; zval *object = getThis(); result_obj = (php_sqlite3_result *)zend_object_store_get_object(object TSRMLS_CC); + zend_error_handling error_handling; - zend_replace_error_handling(EH_THROW, NULL, NULL TSRMLS_CC); + zend_replace_error_handling(EH_THROW, NULL, &error_handling TSRMLS_CC); php_error_docref(NULL TSRMLS_CC, E_WARNING, "SQLite3Result cannot be directly instantiated"); + zend_restore_error_handling(&error_handling TSRMLS_CC); + } /* }}} */ |
