In order to eliminate the following warnings for Win64 builds the
appended patch is needed. However this changes fields in the apr_memnode_t
structure in apr/include/apr_allocator.h
Seems that this strucure really should be private and moved along
with struct apr_allocator_t to include/arch/unix/apr_arch_allocator.h
but either moving it or changing it may be construed as changing
the 1.0 API. Personally I don't think so but if anyone thinks
otherwise let's discuss.
Allan
-------------------------------
apr_pools.c(154) : warning C4267: '=' : conversion from 'size_t' to
'apr_uint32_t', possible loss of data
apr_pools.c(183) : warning C4267: '=' : conversion from 'size_t' to
'apr_uint32_t', possible loss of data
apr_pools.c(621) : warning C4244: '=' : conversion from '__int64' to
'apr_uint32_t', possible loss of data
apr_pools.c(908) : warning C4244: '=' : conversion from '__int64' to
'apr_uint32_t', possible loss of data
apr_pools.c(1009) : warning C4244: '=' : conversion from '__int64' to
'apr_uint32_t', possible loss of data
Index: apr/include/apr_allocator.h
===================================================================
RCS file: /home/cvs/apr/include/apr_allocator.h,v
retrieving revision 1.19
diff -U3 -r1.19 apr_allocator.h
--- apr/include/apr_allocator.h 13 Feb 2004 09:38:28 -0000 1.19
+++ apr/include/apr_allocator.h 29 Sep 2004 20:29:37 -0000
@@ -53,8 +53,8 @@
struct apr_memnode_t {
apr_memnode_t *next; /**< next memnode */
apr_memnode_t **ref; /**< reference to self */
- apr_uint32_t index; /**< size */
- apr_uint32_t free_index; /**< how much free */
+ apr_size_t index; /**< size */
+ apr_size_t free_index; /**< how much free */
char *first_avail; /**< pointer to first free memory */
char *endp; /**< pointer to end of free memory */
};
Index: apr/memory/unix/apr_pools.c
===================================================================
RCS file: /home/cvs/apr/memory/unix/apr_pools.c,v
retrieving revision 1.206
diff -U3 -r1.206 apr_pools.c
--- apr/memory/unix/apr_pools.c 17 Jun 2004 14:13:58 -0000 1.206
+++ apr/memory/unix/apr_pools.c 29 Sep 2004 20:29:37 -0000
@@ -63,9 +63,9 @@
*/
struct apr_allocator_t {
- apr_uint32_t max_index;
- apr_uint32_t max_free_index;
- apr_uint32_t current_free_index;
+ apr_size_t max_index;
+ apr_size_t max_free_index;
+ apr_size_t current_free_index;
#if APR_HAS_THREADS
apr_thread_mutex_t *mutex;
#endif /* APR_HAS_THREADS */
@@ -141,7 +141,7 @@
APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator,
apr_size_t size)
{
- apr_uint32_t max_free_index;
+ apr_size_t max_free_index;
#if APR_HAS_THREADS
apr_thread_mutex_t *mutex;
@@ -168,7 +168,7 @@
apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size)
{
apr_memnode_t *node, **ref;
- apr_uint32_t i, index, max_index;
+ apr_size_t i, index, max_index;
/* Round up the block size to the next boundary, but always
* allocate at least a certain size (MIN_ALLOC).
@@ -304,8 +304,8 @@
void allocator_free(apr_allocator_t *allocator, apr_memnode_t *node)
{
apr_memnode_t *next, *freelist = NULL;
- apr_uint32_t index, max_index;
- apr_uint32_t max_free_index, current_free_index;
+ apr_size_t index, max_index;
+ apr_size_t max_free_index, current_free_index;
#if APR_HAS_THREADS
if (allocator->mutex)
@@ -582,7 +582,7 @@
{
apr_memnode_t *active, *node;
void *mem;
- apr_uint32_t free_index;
+ apr_size_t free_index;
size = APR_ALIGN_DEFAULT(size);
active = pool->active;
@@ -877,7 +877,7 @@
apr_size_t cur_len, size;
char *strp;
apr_pool_t *pool;
- apr_uint32_t free_index;
+ apr_size_t free_index;
pool = ps->pool;
active = ps->node;
@@ -948,7 +948,7 @@
char *strp;
apr_size_t size;
apr_memnode_t *active, *node;
- apr_uint32_t free_index;
+ apr_size_t free_index;
ps.node = active = pool->active;
ps.pool = pool;