andrey Mon Jan 28 22:50:06 2008 UTC Added files: (Branch: PHP_5_3) /php-src/ext/mysqlnd mysqlnd_block_alloc.c mysqlnd_block_alloc.h
Modified files: /php-src/ext/mysql config.w32 /php-src/ext/mysqli/tests mysqli_get_client_stats.phpt /php-src/ext/mysqlnd config.w32 config9.m4 mysqlnd.c mysqlnd_priv.h mysqlnd_ps.c mysqlnd_result.c mysqlnd_structs.h mysqlnd_wireprotocol.c Log: some config.w32 fixes moved mysqlnd's block allocator to a separate file and also now it's part of the connection, no MT problems.
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/config.w32?r1=1.2.6.2&r2=1.2.6.3&diff_format=u Index: php-src/ext/mysql/config.w32 diff -u php-src/ext/mysql/config.w32:1.2.6.2 php-src/ext/mysql/config.w32:1.2.6.3 --- php-src/ext/mysql/config.w32:1.2.6.2 Sat Jan 19 18:21:44 2008 +++ php-src/ext/mysql/config.w32 Mon Jan 28 22:50:06 2008 @@ -1,4 +1,4 @@ -// $Id: config.w32,v 1.2.6.2 2008/01/19 18:21:44 andrey Exp $ +// $Id: config.w32,v 1.2.6.3 2008/01/28 22:50:06 andrey Exp $ // vim:ft=javascript ARG_WITH("mysql", "MySQL support", "no"); @@ -8,13 +8,15 @@ if (CHECK_LIB("libmysql.lib", "mysql", PHP_MYSQL) && CHECK_HEADER_ADD_INCLUDE("mysql.h", "CFLAGS_MYSQL", PHP_MYSQL + "\\include;" + PHP_PHP_BUILD + "\\include\\mysql;" + PHP_MYSQL)) { + EXTENSION("mysql", "php_mysql.c"); + AC_DEFINE('HAVE_MYSQL', 1, 'Have MySQL library'); } else { WARNING("mysql not enabled; libraries and headers not found"); } } else { AC_DEFINE('HAVE_MYSQLND', 1, 'MySQL native driver support enabled'); ADD_EXTENSION_DEP('mysql', 'mysqlnd', true); + EXTENSION("mysql", "php_mysql.c"); + AC_DEFINE('HAVE_MYSQL', 1, 'Have MySQL library'); } - EXTENSION("mysql", "php_mysql.c"); - AC_DEFINE('HAVE_MYSQL', 1, 'Have MySQL library'); } http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_get_client_stats.phpt?r1=1.2.2.3&r2=1.2.2.4&diff_format=u Index: php-src/ext/mysqli/tests/mysqli_get_client_stats.phpt diff -u php-src/ext/mysqli/tests/mysqli_get_client_stats.phpt:1.2.2.3 php-src/ext/mysqli/tests/mysqli_get_client_stats.phpt:1.2.2.4 --- php-src/ext/mysqli/tests/mysqli_get_client_stats.phpt:1.2.2.3 Mon Jan 28 18:25:50 2008 +++ php-src/ext/mysqli/tests/mysqli_get_client_stats.phpt Mon Jan 28 22:50:06 2008 @@ -969,9 +969,9 @@ ["mem_efree_count"]=> string(1) "0" ["mem_malloc_count"]=> - string(1) "1" + string(1) "0" ["mem_malloc_ammount"]=> - string(%d) "%d" + string(1) "0" ["mem_calloc_count"]=> string(1) "0" ["mem_calloc_ammount"]=> @@ -1106,9 +1106,9 @@ [u"mem_efree_count"]=> unicode(1) "0" [u"mem_malloc_count"]=> - unicode(1) "1" + unicode(1) "0" [u"mem_malloc_ammount"]=> - unicode(%d) "%d" + unicode(1) "0" [u"mem_calloc_count"]=> unicode(1) "0" [u"mem_calloc_ammount"]=> http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/config.w32?r1=1.4.2.3&r2=1.4.2.4&diff_format=u Index: php-src/ext/mysqlnd/config.w32 diff -u php-src/ext/mysqlnd/config.w32:1.4.2.3 php-src/ext/mysqlnd/config.w32:1.4.2.4 --- php-src/ext/mysqlnd/config.w32:1.4.2.3 Wed Jan 23 19:11:28 2008 +++ php-src/ext/mysqlnd/config.w32 Mon Jan 28 22:50:06 2008 @@ -1,15 +1,12 @@ -// $Id: config.w32,v 1.4.2.3 2008/01/23 19:11:28 andrey Exp $ +// $Id: config.w32,v 1.4.2.4 2008/01/28 22:50:06 andrey Exp $ // vim:ft=javascript -ARG_WITH("mysqlnd", "MySQL-nd support", "no"); - -if (PHP_MYSQLND != "no") { -mysqld_source = ""; if (CHECK_LIB("ws2_32.lib", "mysqlnd")) { mysqlnd_source = "mysqlnd.c " + - "mysqlnd_debug.c " + + "mysqlnd_block_alloc.c" + "mysqlnd_charset.c " + + "mysqlnd_debug.c " + "mysqlnd_loaddata.c " + "mysqlnd_palloc.c " + "mysqlnd_ps.c " + @@ -21,4 +18,3 @@ "mysqlnd_wireprotocol.c"; EXTENSION("mysqlnd", mysqlnd_source, false); } -} \ No newline at end of file http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/config9.m4?r1=1.3.2.3&r2=1.3.2.4&diff_format=u Index: php-src/ext/mysqlnd/config9.m4 diff -u php-src/ext/mysqlnd/config9.m4:1.3.2.3 php-src/ext/mysqlnd/config9.m4:1.3.2.4 --- php-src/ext/mysqlnd/config9.m4:1.3.2.3 Wed Jan 23 19:11:28 2008 +++ php-src/ext/mysqlnd/config9.m4 Mon Jan 28 22:50:06 2008 @@ -1,5 +1,5 @@ dnl -dnl $Id: config9.m4,v 1.3.2.3 2008/01/23 19:11:28 andrey Exp $ +dnl $Id: config9.m4,v 1.3.2.4 2008/01/28 22:50:06 andrey Exp $ dnl config.m4 for mysqlnd driver dnl If some extension uses mysqlnd it will get compiled in PHP core @@ -7,7 +7,8 @@ mysqlnd_sources="mysqlnd.c mysqlnd_charset.c mysqlnd_wireprotocol.c \ mysqlnd_ps.c mysqlnd_loaddata.c mysqlnd_palloc.c \ mysqlnd_ps_codec.c mysqlnd_statistics.c mysqlnd_qcache.c\ - mysqlnd_result.c mysqlnd_result_meta.c mysqlnd_debug.c" + mysqlnd_result.c mysqlnd_result_meta.c mysqlnd_debug.c\ + mysqlnd_block_alloc.c" PHP_NEW_EXTENSION(mysqlnd, $mysqlnd_sources, no) PHP_ADD_BUILD_DIR([ext/mysqlnd], 1) http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd.c?r1=1.5.2.9&r2=1.5.2.10&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd.c diff -u php-src/ext/mysqlnd/mysqlnd.c:1.5.2.9 php-src/ext/mysqlnd/mysqlnd.c:1.5.2.10 --- php-src/ext/mysqlnd/mysqlnd.c:1.5.2.9 Mon Jan 28 18:25:50 2008 +++ php-src/ext/mysqlnd/mysqlnd.c Mon Jan 28 22:50:06 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd.c,v 1.5.2.9 2008/01/28 18:25:50 andrey Exp $ */ +/* $Id: mysqlnd.c,v 1.5.2.10 2008/01/28 22:50:06 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_wireprotocol.h" @@ -27,6 +27,7 @@ #include "mysqlnd_statistics.h" #include "mysqlnd_charset.h" #include "mysqlnd_debug.h" +#include "mysqlnd_block_alloc.h" #include "php_ini.h" #include "ext/standard/basic_functions.h" #include "ext/standard/php_lcg.h" @@ -66,7 +67,6 @@ MYSQLND_STATS *mysqlnd_global_stats = NULL; static zend_bool mysqlnd_library_initted = FALSE; -MYSQLND_MEMORY_POOL mysqlnd_memory_pool; static enum_func_status mysqlnd_send_close(MYSQLND * conn TSRMLS_DC); @@ -127,140 +127,6 @@ /* }}} */ #endif /* MYSQLND_THREADED */ -/************************************************************************************************/ -/* Let's don't use pool allocation for now */ -/* {{{ mysqlnd_mempool_free_chunk */ -static -void mysqlnd_mempool_free_contents(MYSQLND_MEMORY_POOL * pool TSRMLS_DC) -{ - DBG_ENTER("mysqlnd_mempool_dtor"); - uint i; - for (i = 0; i < pool->free_chunk_list_elements; i++) { - MYSQLND_MEMORY_POOL_CHUNK * chunk = pool->free_chunk_list[i]; - chunk->free_chunk(chunk, FALSE TSRMLS_CC); - } - - DBG_VOID_RETURN; -} -/* }}} */ - -/* Let's don't use pool allocation for now */ -/* {{{ mysqlnd_mempool_free_chunk */ -static -void mysqlnd_mempool_free_chunk(MYSQLND_MEMORY_POOL_CHUNK * chunk, zend_bool cache_it TSRMLS_DC) -{ - DBG_ENTER("mysqlnd_mempool_free_chunk"); - MYSQLND_MEMORY_POOL * pool = chunk->pool; - if (chunk->from_pool) { - /* Try to back-off and guess if this is the last block allocated */ - if (chunk->ptr == (pool->arena + (pool->arena_size - pool->free_size - chunk->size))) { - /* - This was the last allocation. Lucky us, we can free - a bit of memory from the pool. Next time we will return from the same ptr. - */ - pool->free_size += chunk->size; - } - pool->refcount--; - } else { - mnd_free(chunk->ptr); - } - if (cache_it && pool->free_chunk_list_elements < MYSQLND_MEMORY_POOL_CHUNK_LIST_SIZE) { - chunk->ptr = NULL; - pool->free_chunk_list[pool->free_chunk_list_elements++] = chunk; - } else { - /* We did not cache it -> free it */ - mnd_free(chunk); - } - DBG_VOID_RETURN; -} -/* }}} */ - - -/* {{{ mysqlnd_mempool_resize_chunk */ -static void -mysqlnd_mempool_resize_chunk(MYSQLND_MEMORY_POOL_CHUNK * chunk, uint size TSRMLS_DC) -{ - DBG_ENTER("mysqlnd_mempool_resize_chunk"); - if (chunk->from_pool) { - MYSQLND_MEMORY_POOL * pool = chunk->pool; - /* Try to back-off and guess if this is the last block allocated */ - if (chunk->ptr == (pool->arena + (pool->arena_size - pool->free_size - chunk->size))) { - /* - This was the last allocation. Lucky us, we can free - a bit of memory from the pool. Next time we will return from the same ptr. - */ - if ((chunk->size + pool->free_size) < size) { - zend_uchar *new_ptr; - new_ptr = mnd_malloc(size); - memcpy(new_ptr, chunk->ptr, chunk->size); - chunk->ptr = new_ptr; - pool->free_size += chunk->size; - chunk->size = size; - chunk->pool = NULL; /* now we have no pool memory */ - pool->refcount--; - } else { - /* If the chunk is > than asked size then free_memory increases, otherwise decreases*/ - pool->free_size += (chunk->size - size); - } - } else { - /* Not last chunk, if the user asks for less, give it to him */ - if (chunk->size >= size) { - ; /* nop */ - } else { - zend_uchar *new_ptr; - new_ptr = mnd_malloc(size); - memcpy(new_ptr, chunk->ptr, chunk->size); - chunk->ptr = new_ptr; - chunk->size = size; - chunk->pool = NULL; /* now we have no pool memory */ - pool->refcount--; - } - } - } else { - chunk->ptr = mnd_realloc(chunk->ptr, size); - } - DBG_VOID_RETURN; -} -/* }}} */ - - -/* {{{ mysqlnd_mempool_get_chunk */ -static -MYSQLND_MEMORY_POOL_CHUNK * mysqlnd_mempool_get_chunk(MYSQLND_MEMORY_POOL * pool, uint size TSRMLS_DC) -{ - MYSQLND_MEMORY_POOL_CHUNK *chunk = NULL; - DBG_ENTER("mysqlnd_mempool_get_chunk"); - - if (pool->free_chunk_list_elements) { - chunk = pool->free_chunk_list[--pool->free_chunk_list_elements]; - } else { - chunk = mnd_malloc(sizeof(MYSQLND_MEMORY_POOL_CHUNK)); - } - - chunk->free_chunk = mysqlnd_mempool_free_chunk; - chunk->resize_chunk = mysqlnd_mempool_resize_chunk; - chunk->size = size; - /* - Should not go over MYSQLND_MAX_PACKET_SIZE, since we - expect non-arena memory in mysqlnd_wireprotocol.c . We - realloc the non-arena memory. - */ - chunk->pool = pool; - if (size > pool->free_size) { - chunk->ptr = mnd_malloc(size); - chunk->from_pool = FALSE; - } else { - chunk->from_pool = TRUE; - ++pool->refcount; - chunk->ptr = pool->arena + (pool->arena_size - pool->free_size); - /* Last step, update free_size */ - pool->free_size -= size; - } - DBG_RETURN(chunk); -} -/* }}} */ -/************************************************************************************************/ - /* {{{ mysqlnd_library_init */ static @@ -274,13 +140,6 @@ #ifdef ZTS mysqlnd_global_stats->LOCK_access = tsrm_mutex_alloc(); #endif - mysqlnd_memory_pool.arena_size = 16000; - mysqlnd_memory_pool.free_size = mysqlnd_memory_pool.arena_size; - mysqlnd_memory_pool.refcount = 0; - /* OOM ? */ - mysqlnd_memory_pool.arena = mnd_malloc(mysqlnd_memory_pool.arena_size); - mysqlnd_memory_pool.get_chunk = mysqlnd_mempool_get_chunk; - mysqlnd_memory_pool.free_contents = mysqlnd_mempool_free_contents; } } /* }}} */ @@ -291,9 +150,6 @@ void mysqlnd_library_end(TSRMLS_D) { if (mysqlnd_library_initted == TRUE) { - /* mnd_free will reference LOCK_access and won't crash...*/ - mysqlnd_memory_pool.free_contents(&mysqlnd_memory_pool TSRMLS_CC); - free(mysqlnd_memory_pool.arena); #ifdef ZTS tsrm_mutex_free(mysqlnd_global_stats->LOCK_access); #endif @@ -422,6 +278,10 @@ mysqlnd_palloc_free_thd_cache_reference(&conn->zval_cache); conn->zval_cache = NULL; } + if (conn->result_set_memory_pool) { + mysqlnd_mempool_destroy(conn->result_set_memory_pool TSRMLS_CC); + conn->result_set_memory_pool = NULL; + } if (conn->qcache) { DBG_INF("Freeing qcache reference"); mysqlnd_qcache_free_cache_reference(&conn->qcache); @@ -971,6 +831,7 @@ } DBG_INF_FMT("connection_id=%llu", conn->thread_id); + conn->result_set_memory_pool = mysqlnd_mempool_create(16000 TSRMLS_CC); #if PHP_MAJOR_VERSION >= 6 { uint as_unicode = 1; http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_priv.h?r1=1.4.2.8&r2=1.4.2.9&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_priv.h diff -u php-src/ext/mysqlnd/mysqlnd_priv.h:1.4.2.8 php-src/ext/mysqlnd/mysqlnd_priv.h:1.4.2.9 --- php-src/ext/mysqlnd/mysqlnd_priv.h:1.4.2.8 Mon Jan 28 18:25:50 2008 +++ php-src/ext/mysqlnd/mysqlnd_priv.h Mon Jan 28 22:50:06 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_priv.h,v 1.4.2.8 2008/01/28 18:25:50 andrey Exp $ */ +/* $Id: mysqlnd_priv.h,v 1.4.2.9 2008/01/28 22:50:06 andrey Exp $ */ #ifndef MYSQLND_PRIV_H #define MYSQLND_PRIV_H @@ -183,9 +183,6 @@ extern const char * mysqlnd_out_of_sync; extern const char * mysqlnd_server_gone; -extern MYSQLND_MEMORY_POOL mysqlnd_memory_pool; - - enum_func_status mysqlnd_handle_local_infile(MYSQLND *conn, const char *filename, zend_bool *is_warning TSRMLS_DC); http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_ps.c?r1=1.3.2.7&r2=1.3.2.8&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_ps.c diff -u php-src/ext/mysqlnd/mysqlnd_ps.c:1.3.2.7 php-src/ext/mysqlnd/mysqlnd_ps.c:1.3.2.8 --- php-src/ext/mysqlnd/mysqlnd_ps.c:1.3.2.7 Mon Jan 28 18:25:50 2008 +++ php-src/ext/mysqlnd/mysqlnd_ps.c Mon Jan 28 22:50:06 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_ps.c,v 1.3.2.7 2008/01/28 18:25:50 andrey Exp $ */ +/* $Id: mysqlnd_ps.c,v 1.3.2.8 2008/01/28 22:50:06 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_wireprotocol.h" @@ -1249,8 +1249,6 @@ static enum_func_status MYSQLND_METHOD(mysqlnd_stmt, refresh_bind_param)(MYSQLND_STMT * const stmt TSRMLS_DC) { - unsigned int i = 0; - DBG_ENTER("mysqlnd_stmt::refresh_bind_param"); DBG_INF_FMT("stmt=%lu param_count=%u", stmt->stmt_id, stmt->param_count); http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_result.c?r1=1.4.2.8&r2=1.4.2.9&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_result.c diff -u php-src/ext/mysqlnd/mysqlnd_result.c:1.4.2.8 php-src/ext/mysqlnd/mysqlnd_result.c:1.4.2.9 --- php-src/ext/mysqlnd/mysqlnd_result.c:1.4.2.8 Mon Jan 28 18:25:50 2008 +++ php-src/ext/mysqlnd/mysqlnd_result.c Mon Jan 28 22:50:06 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_result.c,v 1.4.2.8 2008/01/28 18:25:50 andrey Exp $ */ +/* $Id: mysqlnd_result.c,v 1.4.2.9 2008/01/28 22:50:06 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_wireprotocol.h" @@ -585,6 +585,7 @@ /* }}} */ +#ifdef MYSQLND_THREADED /* {{{ mysqlnd_fetch_lengths_async_buffered */ /* Do lazy initialization for buffered results. As PHP strings have @@ -620,6 +621,7 @@ return result->lengths; } /* }}} */ +#endif /* {{{ mysqlnd_fetch_lengths_unbuffered */ http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_structs.h?r1=1.2.2.7&r2=1.2.2.8&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_structs.h diff -u php-src/ext/mysqlnd/mysqlnd_structs.h:1.2.2.7 php-src/ext/mysqlnd/mysqlnd_structs.h:1.2.2.8 --- php-src/ext/mysqlnd/mysqlnd_structs.h:1.2.2.7 Mon Jan 28 18:25:50 2008 +++ php-src/ext/mysqlnd/mysqlnd_structs.h Mon Jan 28 22:50:06 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_structs.h,v 1.2.2.7 2008/01/28 18:25:50 andrey Exp $ */ +/* $Id: mysqlnd_structs.h,v 1.2.2.8 2008/01/28 22:50:06 andrey Exp $ */ #ifndef MYSQLND_STRUCTS_H #define MYSQLND_STRUCTS_H @@ -41,7 +41,6 @@ uint free_chunk_list_elements; MYSQLND_MEMORY_POOL_CHUNK* (*get_chunk)(MYSQLND_MEMORY_POOL * pool, uint size TSRMLS_DC); - void (*free_contents)(MYSQLND_MEMORY_POOL * pool TSRMLS_DC); }; struct st_mysqlnd_memory_pool_chunk @@ -444,6 +443,8 @@ /* qcache */ MYSQLND_QCACHE *qcache; + MYSQLND_MEMORY_POOL * result_set_memory_pool; + /* stats */ MYSQLND_STATS stats; http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_wireprotocol.c?r1=1.4.2.7&r2=1.4.2.8&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_wireprotocol.c diff -u php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.4.2.7 php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.4.2.8 --- php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.4.2.7 Mon Jan 28 18:25:50 2008 +++ php-src/ext/mysqlnd/mysqlnd_wireprotocol.c Mon Jan 28 22:50:06 2008 @@ -632,7 +632,8 @@ /* {{{ php_mysqlnd_scramble */ -void php_mysqlnd_scramble(zend_uchar * const buffer, const zend_uchar * const scramble, const zend_uchar * const password) +void php_mysqlnd_scramble(zend_uchar * const buffer, const zend_uchar * const scramble, + const zend_uchar * const password) { PHP_SHA1_CTX context; unsigned char sha1[SHA1_MAX_LENGTH]; @@ -656,7 +657,7 @@ PHP_SHA1Final(buffer, &context); /* let's crypt buffer now */ - php_mysqlnd_crypt(buffer, (const unsigned char *)buffer, (const unsigned char *)sha1, SHA1_MAX_LENGTH); + php_mysqlnd_crypt(buffer, (const uchar *)buffer, (const uchar *)sha1, SHA1_MAX_LENGTH); } /* }}} */ @@ -1267,7 +1268,8 @@ We need a trailing \0 for the last string, in case of text-mode, to be able to implement read-only variables. Thus, we add + 1. */ - *buffer = mysqlnd_memory_pool.get_chunk(&mysqlnd_memory_pool, *data_size + 1 TSRMLS_CC); + *buffer = conn->result_set_memory_pool->get_chunk(conn->result_set_memory_pool, + *data_size + 1 TSRMLS_CC); p = (*buffer)->ptr; } else if (!first_iteration) { /* Empty packet after MYSQLND_MAX_PACKET_SIZE packet. That's ok, break */ @@ -1308,7 +1310,8 @@ /* {{{ php_mysqlnd_rowp_read_binary_protocol */ void php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields, - uint field_count, MYSQLND_FIELD *fields_metadata, MYSQLND *conn TSRMLS_DC) + uint field_count, MYSQLND_FIELD *fields_metadata, + MYSQLND *conn TSRMLS_DC) { int i; zend_uchar *p = row_buffer->ptr; @@ -1362,7 +1365,8 @@ /* {{{ php_mysqlnd_rowp_read_text_protocol */ void php_mysqlnd_rowp_read_text_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields, - uint field_count, MYSQLND_FIELD *fields_metadata, MYSQLND *conn TSRMLS_DC) + uint field_count, MYSQLND_FIELD *fields_metadata, + MYSQLND *conn TSRMLS_DC) { int i; zend_bool last_field_was_string = FALSE; http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_block_alloc.c?view=markup&rev=1.1 Index: php-src/ext/mysqlnd/mysqlnd_block_alloc.c +++ php-src/ext/mysqlnd/mysqlnd_block_alloc.c http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_block_alloc.h?view=markup&rev=1.1 Index: php-src/ext/mysqlnd/mysqlnd_block_alloc.h +++ php-src/ext/mysqlnd/mysqlnd_block_alloc.h
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php