@@ -35,7 +35,7 @@ ZEND_DECLARE_MODULE_GLOBALS(sqlite3)
35
35
static PHP_GINIT_FUNCTION (sqlite3 );
36
36
static int php_sqlite3_authorizer (void * autharg , int action , const char * arg1 , const char * arg2 , const char * arg3 , const char * arg4 );
37
37
static 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 );
39
39
40
40
#define SQLITE3_CHECK_INITIALIZED (db_obj , member , class_name ) \
41
41
if (!(db_obj) || !(member)) { \
@@ -509,7 +509,6 @@ PHP_METHOD(SQLite3, prepare)
509
509
zval * object = ZEND_THIS ;
510
510
zend_string * sql ;
511
511
int errcode ;
512
- php_sqlite3_free_list * free_item ;
513
512
514
513
db_obj = Z_SQLITE3_DB_P (object );
515
514
@@ -537,11 +536,7 @@ PHP_METHOD(SQLite3, prepare)
537
536
538
537
stmt_obj -> initialised = 1 ;
539
538
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 );
545
540
}
546
541
/* }}} */
547
542
@@ -607,11 +602,7 @@ PHP_METHOD(SQLite3, query)
607
602
case SQLITE_ROW : /* Valid Row */
608
603
case SQLITE_DONE : /* Valid but no results */
609
604
{
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 );
615
606
sqlite3_reset (result -> stmt_obj -> stmt );
616
607
break ;
617
608
}
@@ -1825,7 +1816,6 @@ PHP_METHOD(SQLite3Stmt, __construct)
1825
1816
zval * db_zval ;
1826
1817
zend_string * sql ;
1827
1818
int errcode ;
1828
- php_sqlite3_free_list * free_item ;
1829
1819
1830
1820
stmt_obj = Z_SQLITE3_STMT_P (object );
1831
1821
@@ -1852,12 +1842,7 @@ PHP_METHOD(SQLite3Stmt, __construct)
1852
1842
}
1853
1843
stmt_obj -> initialised = 1 ;
1854
1844
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 );
1861
1846
}
1862
1847
/* }}} */
1863
1848
@@ -2151,25 +2136,24 @@ static int php_sqlite3_authorizer(void *autharg, int action, const char *arg1, c
2151
2136
/* {{{ php_sqlite3_free_list_dtor */
2152
2137
static void php_sqlite3_free_list_dtor (void * * item )
2153
2138
{
2154
- php_sqlite3_free_list * free_item = ( php_sqlite3_free_list * ) * item ;
2139
+ php_sqlite3_stmt * stmt_obj = * item ;
2155
2140
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 ;
2159
2144
}
2160
- efree (* item );
2161
2145
}
2162
2146
/* }}} */
2163
2147
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 ) /* {{{ */
2165
2149
{
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 );
2167
2151
}
2168
2152
/* }}} */
2169
2153
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 ) /* {{{ */
2171
2155
{
2172
- return ((* free_list )-> stmt_obj -> initialised && statement == (* free_list ) -> stmt_obj -> stmt );
2156
+ return ((* stmt_obj_ptr )-> initialised && statement == (* stmt_obj_ptr ) -> stmt );
2173
2157
}
2174
2158
/* }}} */
2175
2159
@@ -2331,7 +2315,7 @@ static zend_object *php_sqlite3_object_new(zend_class_entry *class_type) /* {{{
2331
2315
intern = zend_object_alloc (sizeof (php_sqlite3_db_object ), class_type );
2332
2316
2333
2317
/* 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 );
2335
2319
2336
2320
zend_object_std_init (& intern -> zo , class_type );
2337
2321
object_properties_init (& intern -> zo , class_type );
0 commit comments