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: [email protected]
For additional commands, e-mail: [email protected]