]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.0' into PHP-7.1
authorNikita Popov <nikita.ppv@gmail.com>
Sun, 12 Feb 2017 11:50:14 +0000 (12:50 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Sun, 12 Feb 2017 11:50:14 +0000 (12:50 +0100)
1  2 
NEWS
ext/mysqlnd/mysqlnd_wireprotocol.c

diff --cc NEWS
Simple merge
index d5495715e0cbf1538dcd531eb4756efc55315c14,6113543e2b89afc8b5024ca040e808e99c7bc03a..90ae615a1a72eb7cd3de7f0ec59aeb45298fc6d5
@@@ -1466,6 -1441,6 +1466,7 @@@ php_mysqlnd_read_row_ex(MYSQLND_PFC * p
        MYSQLND_PACKET_HEADER header;
        zend_uchar * p = NULL;
        zend_bool first_iteration = TRUE;
++      size_t prealloc_more_bytes;
  
        DBG_ENTER("php_mysqlnd_read_row_ex");
        
          for next one if they have 2^24 - 1 sizes. But just read the header of a
          zero-length byte, don't read the body, there is no such.
        */
-       *data_size = 1;
 +
 +      /*
 +        We're allocating an extra byte, as php_mysqlnd_rowp_read_text_protocol_aux
 +        needs to be able to append a terminating \0 for atoi/atof.
 +      */
++      prealloc_more_bytes = 1;
        
+       *data_size = 0;
        while (1) {
 -              if (FAIL == mysqlnd_read_header(conn->net, &header, conn->stats, conn->error_info)) {
 +              if (FAIL == mysqlnd_read_header(pfc, vio, &header, stats, error_info)) {
                        ret = FAIL;
                        break;
                }
  
                if (first_iteration) {
                        first_iteration = FALSE;
-                       *buffer = pool->get_chunk(pool, *data_size);
 -                      *buffer = result_set_memory_pool->get_chunk(
 -                              result_set_memory_pool, *data_size + prealloc_more_bytes);
++                      *buffer = pool->get_chunk(pool, *data_size + prealloc_more_bytes);
                        if (!*buffer) {
                                ret = FAIL;
                                break;
                        /*
                          We have to realloc the buffer.
                        */
-                       if (FAIL == pool->resize_chunk(pool, *buffer, *data_size)) {
 -                      if (FAIL == (*buffer)->resize_chunk((*buffer), *data_size + prealloc_more_bytes)) {
 -                              SET_OOM_ERROR(*conn->error_info);
++                      if (FAIL == pool->resize_chunk(pool, *buffer, *data_size + prealloc_more_bytes)) {
 +                              SET_OOM_ERROR(error_info);
                                ret = FAIL;
                                break;
                        }
                }
        }
        if (ret == FAIL && *buffer) {
 -              (*buffer)->free_chunk((*buffer));
 +              pool->free_chunk(pool, *buffer);
                *buffer = NULL;
        }
-       (*data_size)--;
        DBG_RETURN(ret);
  }
  /* }}} */