Author: mturk Date: Tue Mar 27 08:04:53 2012 New Revision: 1305768 URL: http://svn.apache.org/viewvc?rev=1305768&view=rev Log: Use realloc instead alloc/copy. We have that API exactly for that
Modified: tomcat/jk/trunk/native/common/jk_map.c tomcat/jk/trunk/native/common/jk_pool.c Modified: tomcat/jk/trunk/native/common/jk_map.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_map.c?rev=1305768&r1=1305767&r2=1305768&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_map.c (original) +++ tomcat/jk/trunk/native/common/jk_map.c Tue Mar 27 08:04:53 2012 @@ -657,28 +657,22 @@ static size_t trim(char *s) static int map_realloc(jk_map_t *m) { if (m->size == m->capacity) { - char **names; - void **values; + const char **names; + const void **values; unsigned int *keys; - int capacity = m->capacity + CAPACITY_INC_SIZE; - - names = (char **)jk_pool_alloc(&m->p, sizeof(char *) * capacity); - values = (void **)jk_pool_alloc(&m->p, sizeof(void *) * capacity); - keys = (unsigned int *)jk_pool_alloc(&m->p, sizeof(unsigned int) * capacity); - - if (values && names) { - if (m->capacity && m->names) - memcpy(names, m->names, sizeof(char *) * m->capacity); - - if (m->capacity && m->values) - memcpy(values, m->values, sizeof(void *) * m->capacity); - - if (m->capacity && m->keys) - memcpy(keys, m->keys, sizeof(unsigned int) * m->capacity); - - m->names = (const char **)names; - m->values = (const void **)values; - m->keys = keys; + int capacity = m->capacity + CAPACITY_INC_SIZE; + size_t old_sz = m->capacity * sizeof(void *); + size_t new_sz = capacity * sizeof(void *); + + names = (const char **)jk_pool_realloc(&m->p, new_sz, m->names, old_sz); + values = (const void **)jk_pool_realloc(&m->p, new_sz, m->values, old_sz); + keys = (unsigned int *)jk_pool_realloc(&m->p, new_sz, m->keys, old_sz); + + if (values && names && keys) { + + m->names = names; + m->values = values; + m->keys = keys; m->capacity = capacity; return JK_TRUE; Modified: tomcat/jk/trunk/native/common/jk_pool.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_pool.c?rev=1305768&r1=1305767&r2=1305768&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_pool.c (original) +++ tomcat/jk/trunk/native/common/jk_pool.c Tue Mar 27 08:04:53 2012 @@ -104,15 +104,15 @@ void *jk_pool_realloc(jk_pool_t *p, size { char *rc; - if (!p || (!old && old_sz)) { + if (!p || (sz < old_sz)) { return NULL; } - + if (!old) + return jk_pool_calloc(p, sz); rc = (char *)jk_pool_alloc(p, sz); if (rc) { memcpy(rc, old, old_sz); - if (sz > old_sz) - memset(rc + old_sz, 0, sz - old_sz); + memset(rc + old_sz, 0, sz - old_sz); } return rc; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org