commit 1ff4b273acc0221fb89b922f16d636adc0ea9116
parent 341b9db92e91d9ddcf8230a0329c52e319bdee1f
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Sat, 8 Aug 2015 12:29:34 +0000
connection.c: try_ready_chunked_body(): fix VS compiler warning, small refactoring for readability
Diffstat:
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
@@ -411,7 +411,7 @@ try_ready_chunked_body (struct MHD_Connection *connection)
response = connection->response;
if (0 == connection->write_buffer_size)
{
- size = connection->daemon->pool_size;
+ size = MHD_MIN(connection->daemon->pool_size, 2 * (0xFFFFFF + sizeof(cbuf) + 2));
do
{
size /= 2;
@@ -433,17 +433,18 @@ try_ready_chunked_body (struct MHD_Connection *connection)
ret = 0; /* response must be empty, don't bother calling crc */
else if ( (response->data_start <=
connection->response_write_position) &&
- (response->data_size + response->data_start >
+ (response->data_start + response->data_size >
connection->response_write_position) )
{
+ /* difference between response_write_position and data_start is less
+ than data_size which is size_t type, no need to check for overflow */
+ const size_t data_write_offset = (size_t)(connection->response_write_position - response->data_start);
/* buffer already ready, use what is there for the chunk */
- ret = response->data_size + response->data_start - connection->response_write_position;
- if ( (ret > 0) &&
- (((size_t) ret) > connection->write_buffer_size - sizeof (cbuf) - 2) )
+ ret = response->data_size - data_write_offset;
+ if ( ((size_t) ret) > connection->write_buffer_size - sizeof (cbuf) - 2 )
ret = connection->write_buffer_size - sizeof (cbuf) - 2;
memcpy (&connection->write_buffer[sizeof (cbuf)],
- &response->data[connection->response_write_position - response->data_start],
- ret);
+ &response->data[data_write_offset], ret);
}
else
{