Author: stefan2
Date: Sun May 15 18:01:36 2011
New Revision: 1103486
URL: http://svn.apache.org/viewvc?rev=1103486&view=rev
Log:
Allocate stringbuf_t objects using a single apr_palloc call.
* subversion/libsvn_subr/svn_string.c
(svn_stringbuf_create_ensure): model in symmetry to svn_string_ncreate
Modified:
subversion/trunk/subversion/libsvn_subr/svn_string.c
Modified: subversion/trunk/subversion/libsvn_subr/svn_string.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/svn_string.c?rev=1103486&r1=1103485&r2=1103486&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/svn_string.c (original)
+++ subversion/trunk/subversion/libsvn_subr/svn_string.c Sun May 15 18:01:36
2011
@@ -258,7 +258,8 @@ create_stringbuf(char *data, apr_size_t
svn_stringbuf_t *
svn_stringbuf_create_ensure(apr_size_t blocksize, apr_pool_t *pool)
{
- char *data;
+ void *mem;
+ svn_stringbuf_t *new_string;
/* apr_palloc will allocate multiples of 8.
* Thus, we would waste some of that memory if we stuck to the
@@ -266,12 +267,21 @@ svn_stringbuf_create_ensure(apr_size_t b
* use some other aligment or none at all. */
++blocksize; /* + space for '\0' */
- data = apr_palloc(pool, APR_ALIGN_DEFAULT(blocksize));
+ blocksize = APR_ALIGN_DEFAULT(blocksize);
+
+ /* Allocate memory for svn_string_t and data in one chunk. */
+ mem = apr_palloc(pool, sizeof(*new_string) + blocksize);
+
+ /* Initialize header and string */
+ new_string = mem;
+
+ new_string->data = (char*)mem + sizeof(*new_string);
+ new_string->data[0] = '\0';
+ new_string->len = 0;
+ new_string->blocksize = blocksize;
+ new_string->pool = pool;
- data[0] = '\0';
-
- /* wrap an svn_stringbuf_t around the new data buffer. */
- return create_stringbuf(data, 0, blocksize, pool);
+ return new_string;
}
svn_stringbuf_t *