Re: com php-src: Add object initialization checks for sqlite3 classes: ext/sqlite3/sqlite3.c
| From: | Nikita Popov | Date: | Sun, 27 Jul 2014 08:45:20 +0000 |
| Subject: | Re: com php-src: Add object initialization checks for sqlite3 classes: ext/sqlite3/sqlite3.c | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-79595@lists.php.net to get a copy of this message | ||
On Sun, Jul 27, 2014 at 1:57 AM, Stanislav Malyshev <stas@php.net> wrote:
> Commit: 403eca4173da5c04202ee0b3c2ed2d949fe413b3
> Author: Stanislav Malyshev <stas@php.net> Sat, 26 Jul 2014
> 15:52:51 -0700
> Parents: a68ef0a117b0e7da4fe9ab1ee098c6e5e0553c4a
> Branches: PHP-5.6 master
>
> Link:
>
> http://git.php.net/?p=php-src.git;a=commitdiff;h=403eca4173da5c04202ee0b3c2ed2d949fe413b3
>
> Log:
> Add object initialization checks for sqlite3 classes
>
> Changed paths:
> M ext/sqlite3/sqlite3.c
>
>
> Diff:
> diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c
> index 0c9041e..33c855f 100644
> --- a/ext/sqlite3/sqlite3.c
> +++ b/ext/sqlite3/sqlite3.c
> @@ -54,7 +54,7 @@ static void php_sqlite3_error(php_sqlite3_db_object
> *db_obj, char *format, ...)
> vspprintf(&message, 0, format, arg);
> va_end(arg);
>
> - if (db_obj->exception) {
> + if (db_obj && db_obj->exception) {
> zend_throw_exception(zend_exception_get_default(TSRMLS_C),
> message, 0 TSRMLS_CC);
> } else {
> php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", message);
> @@ -67,11 +67,17 @@ static void php_sqlite3_error(php_sqlite3_db_object
> *db_obj, char *format, ...)
> /* }}} */
>
> #define SQLITE3_CHECK_INITIALIZED(db_obj, member, class_name) \
> - if (!(member)) { \
> + if (!(db_obj) || !(member)) { \
> php_sqlite3_error(db_obj, "The " #class_name " object has
> not been correctly initialised"); \
> RETURN_FALSE; \
> }
>
> +#define SQLITE3_CHECK_INITIALIZED_STMT(member, class_name) \
> + if (!(member)) { \
> + php_error_docref(NULL TSRMLS_CC, E_WARNING, "The "
> #class_name " object has not been correctly initialised"); \
> + RETURN_FALSE; \
> + }
> +
> /* {{{ PHP_INI
> */
> PHP_INI_BEGIN()
> @@ -191,12 +197,14 @@ PHP_METHOD(sqlite3, close)
> }
>
> if (db_obj->initialised) {
> - zend_llist_clean(&(db_obj->free_list));
> - errcode = sqlite3_close(db_obj->db);
> - if (errcode != SQLITE_OK) {
> - php_sqlite3_error(db_obj, "Unable to close
> database: %d, %s", errcode, sqlite3_errmsg(db_obj->db));
> - RETURN_FALSE;
> - }
> + zend_llist_clean(&(db_obj->free_list));
> + if(db_obj->db) {
> + errcode = sqlite3_close(db_obj->db);
> + if (errcode != SQLITE_OK) {
> + php_sqlite3_error(db_obj, "Unable to close
> database: %d, %s", errcode, sqlite3_errmsg(db_obj->db));
> + RETURN_FALSE;
> + }
> + }
>
Whitespace looks messed up here.
Nikita