@@ -35,7 +35,7 @@ ZEND_DECLARE_MODULE_GLOBALS(sqlite3)
3535static PHP_GINIT_FUNCTION (sqlite3 );
3636static int php_sqlite3_authorizer (void * autharg , int action , const char * arg1 , const char * arg2 , const char * arg3 , const char * arg4 );
3737static void sqlite3_param_dtor (zval * data );
38- static int php_sqlite3_compare_stmt_zval_free (php_sqlite3_free_list * * free_list , zval * statement );
38+ static int php_sqlite3_compare_stmt_zval_free (php_sqlite3_stmt * * stmt_obj_ptr , zval * statement );
3939
4040#define SQLITE3_CHECK_INITIALIZED (db_obj , member , class_name ) \
4141 if (!(db_obj) || !(member)) { \
@@ -509,7 +509,6 @@ PHP_METHOD(SQLite3, prepare)
509509 zval * object = ZEND_THIS ;
510510 zend_string * sql ;
511511 int errcode ;
512- php_sqlite3_free_list * free_item ;
513512
514513 db_obj = Z_SQLITE3_DB_P (object );
515514
@@ -537,11 +536,7 @@ PHP_METHOD(SQLite3, prepare)
537536
538537 stmt_obj -> initialised = 1 ;
539538
540- free_item = emalloc (sizeof (php_sqlite3_free_list ));
541- free_item -> stmt_obj = stmt_obj ;
542- ZVAL_OBJ (& free_item -> stmt_obj_zval , Z_OBJ_P (return_value ));
543-
544- zend_llist_add_element (& (db_obj -> free_list ), & free_item );
539+ zend_llist_add_element (& (db_obj -> free_list ), & stmt_obj );
545540}
546541/* }}} */
547542
@@ -607,11 +602,7 @@ PHP_METHOD(SQLite3, query)
607602 case SQLITE_ROW : /* Valid Row */
608603 case SQLITE_DONE : /* Valid but no results */
609604 {
610- php_sqlite3_free_list * free_item ;
611- free_item = emalloc (sizeof (php_sqlite3_free_list ));
612- free_item -> stmt_obj = stmt_obj ;
613- free_item -> stmt_obj_zval = stmt ;
614- zend_llist_add_element (& (db_obj -> free_list ), & free_item );
605+ zend_llist_add_element (& (db_obj -> free_list ), & stmt_obj );
615606 sqlite3_reset (result -> stmt_obj -> stmt );
616607 break ;
617608 }
@@ -1825,7 +1816,6 @@ PHP_METHOD(SQLite3Stmt, __construct)
18251816 zval * db_zval ;
18261817 zend_string * sql ;
18271818 int errcode ;
1828- php_sqlite3_free_list * free_item ;
18291819
18301820 stmt_obj = Z_SQLITE3_STMT_P (object );
18311821
@@ -1852,12 +1842,7 @@ PHP_METHOD(SQLite3Stmt, __construct)
18521842 }
18531843 stmt_obj -> initialised = 1 ;
18541844
1855- free_item = emalloc (sizeof (php_sqlite3_free_list ));
1856- free_item -> stmt_obj = stmt_obj ;
1857- //?? free_item->stmt_obj_zval = ZEND_THIS;
1858- ZVAL_OBJ (& free_item -> stmt_obj_zval , Z_OBJ_P (object ));
1859-
1860- zend_llist_add_element (& (db_obj -> free_list ), & free_item );
1845+ zend_llist_add_element (& (db_obj -> free_list ), & stmt_obj );
18611846}
18621847/* }}} */
18631848
@@ -2151,25 +2136,24 @@ static int php_sqlite3_authorizer(void *autharg, int action, const char *arg1, c
21512136/* {{{ php_sqlite3_free_list_dtor */
21522137static void php_sqlite3_free_list_dtor (void * * item )
21532138{
2154- php_sqlite3_free_list * free_item = ( php_sqlite3_free_list * ) * item ;
2139+ php_sqlite3_stmt * stmt_obj = * item ;
21552140
2156- if (free_item -> stmt_obj && free_item -> stmt_obj -> initialised ) {
2157- sqlite3_finalize (free_item -> stmt_obj -> stmt );
2158- free_item -> stmt_obj -> initialised = 0 ;
2141+ if (stmt_obj && stmt_obj -> initialised ) {
2142+ sqlite3_finalize (stmt_obj -> stmt );
2143+ stmt_obj -> initialised = 0 ;
21592144 }
2160- efree (* item );
21612145}
21622146/* }}} */
21632147
2164- static int php_sqlite3_compare_stmt_zval_free (php_sqlite3_free_list * * free_list , zval * statement ) /* {{{ */
2148+ static int php_sqlite3_compare_stmt_zval_free (php_sqlite3_stmt * * stmt_obj_ptr , zval * statement ) /* {{{ */
21652149{
2166- return ((* free_list )-> stmt_obj -> initialised && Z_PTR_P (statement ) == Z_PTR (( * free_list )-> stmt_obj_zval ) );
2150+ return ((* stmt_obj_ptr )-> initialised && Z_OBJ_P (statement ) == & ( * stmt_obj_ptr )-> zo );
21672151}
21682152/* }}} */
21692153
2170- static int php_sqlite3_compare_stmt_free ( php_sqlite3_free_list * * free_list , sqlite3_stmt * statement ) /* {{{ */
2154+ static int php_sqlite3_compare_stmt_free (php_sqlite3_stmt * * stmt_obj_ptr , sqlite3_stmt * statement ) /* {{{ */
21712155{
2172- return ((* free_list )-> stmt_obj -> initialised && statement == (* free_list ) -> stmt_obj -> stmt );
2156+ return ((* stmt_obj_ptr )-> initialised && statement == (* stmt_obj_ptr ) -> stmt );
21732157}
21742158/* }}} */
21752159
@@ -2331,7 +2315,7 @@ static zend_object *php_sqlite3_object_new(zend_class_entry *class_type) /* {{{
23312315 intern = zend_object_alloc (sizeof (php_sqlite3_db_object ), class_type );
23322316
23332317 /* Need to keep track of things to free */
2334- zend_llist_init (& (intern -> free_list ), sizeof (php_sqlite3_free_list * ), (llist_dtor_func_t )php_sqlite3_free_list_dtor , 0 );
2318+ zend_llist_init (& (intern -> free_list ), sizeof (php_sqlite3_stmt * ), (llist_dtor_func_t )php_sqlite3_free_list_dtor , 0 );
23352319
23362320 zend_object_std_init (& intern -> zo , class_type );
23372321 object_properties_init (& intern -> zo , class_type );
0 commit comments