On 15.05.2011 20:23, Blair Zajac wrote:
On May 15, 2011, at 11:06 AM, stef...@apache.org wrote:
Author: stefan2
Date: Sun May 15 18:06:23 2011
New Revision: 1103490
URL: http://svn.apache.org/viewvc?rev=1103490&view=rev
Log:
Eliminate an svn_string_t header allocation and assignment in ra_svn
protocol handling code.
* subversion/libsvn_ra_svn/marshal.c
(read_string): "hero-cast" existing stringbuf into svn_string_t
Modified:
subversion/trunk/subversion/libsvn_ra_svn/marshal.c
Modified: subversion/trunk/subversion/libsvn_ra_svn/marshal.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/marshal.c?rev=1103490&r1=1103489&r2=1103490&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/marshal.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/marshal.c Sun May 15 18:06:23 2011
@@ -638,11 +638,11 @@ static svn_error_t *read_string(svn_ra_s
}
/* Return the string properly wrapped into an RA_SVN item.
+ * Note that the svn_string_t structure is identical to the
+ * data and len members in stringbuf.
*/
item->kind = SVN_RA_SVN_STRING;
- item->u.string = apr_palloc(pool, sizeof(*item->u.string));
- item->u.string->data = stringbuf->data;
- item->u.string->len = stringbuf->len;
+ item->u.string = (svn_string_t *)(&stringbuf->data);
Is this cast really necessary? I would rather take a small cost hit in
preference to the code being safe.
r1124677 still does essentially the same but moves
it into a separate function and explains in detail how
it works and why it is safe.
-- Stefan^2.