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

Reply via email to