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 *