You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2011/11/16 09:13:41 UTC

svn commit: r1202576 - /tomcat/jk/trunk/native/common/jk_pool.c

Author: mturk
Date: Wed Nov 16 08:13:41 2011
New Revision: 1202576

URL: http://svn.apache.org/viewvc?rev=1202576&view=rev
Log:
Directly use dyn_alloc code in alloc function instead having separate function

Modified:
    tomcat/jk/trunk/native/common/jk_pool.c

Modified: tomcat/jk/trunk/native/common/jk_pool.c
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_pool.c?rev=1202576&r1=1202575&r2=1202576&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_pool.c (original)
+++ tomcat/jk/trunk/native/common/jk_pool.c Wed Nov 16 08:13:41 2011
@@ -25,10 +25,6 @@
 
 #define DEFAULT_DYNAMIC 10
 
-
-static void *jk_pool_dyn_alloc(jk_pool_t *p, size_t size);
-
-
 void jk_open_pool(jk_pool_t *p, jk_pool_atom_t *buf, size_t size)
 {
     p->pos = 0;
@@ -67,15 +63,32 @@ void *jk_pool_alloc(jk_pool_t *p, size_t
 {
     void *rc = NULL;
 
+    if (size == 0)
+        return NULL;
     size = JK_ALIGN_DEFAULT(size);
     if ((p->size - p->pos) >= size) {
         rc = &(p->buf[p->pos]);
         p->pos += size;
     }
     else {
-        rc = jk_pool_dyn_alloc(p, size);
-    }
+        if (p->dyn_size == p->dyn_pos) {
+            size_t new_dyn_size = p->dyn_size * 2 + DEFAULT_DYNAMIC;
+            void **new_dynamic = (void **)realloc(p->dynamic,
+                                                new_dyn_size * sizeof(void *));
+            if (new_dynamic) {
+                p->dynamic = new_dynamic;
+                p->dyn_size = new_dyn_size;
+            }
+            else {
+                return NULL;
+            }
+        }
 
+        rc = p->dynamic[p->dyn_pos] = malloc(size);
+        if (p->dynamic[p->dyn_pos]) {
+            p->dyn_pos++;
+        }
+    }
     return rc;
 }
 
@@ -169,33 +182,3 @@ char *jk_pool_strcatv(jk_pool_t *p, ...)
 
     return rc;
 }
-
-static void *jk_pool_dyn_alloc(jk_pool_t *p, size_t size)
-{
-    void *rc;
-
-    if (p->dyn_size == p->dyn_pos) {
-        size_t new_dyn_size = p->dyn_size * 2 + DEFAULT_DYNAMIC;
-        void **new_dynamic = (void **)malloc(new_dyn_size * sizeof(void *));
-        if (new_dynamic) {
-            if (p->dynamic) {
-                /* Copy old dynamic slots */
-                memcpy(new_dynamic, p->dynamic, p->dyn_size * sizeof(void *));
-                free(p->dynamic);
-            }
-
-            p->dynamic = new_dynamic;
-            p->dyn_size = new_dyn_size;
-        }
-        else {
-            return NULL;
-        }
-    }
-
-    rc = p->dynamic[p->dyn_pos] = malloc(size);
-    if (p->dynamic[p->dyn_pos]) {
-        p->dyn_pos++;
-    }
-
-    return rc;
-}



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org