You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2015/05/12 19:42:46 UTC
svn commit: r1679015 -
/subversion/branches/1.9-cache-improvements/subversion/libsvn_subr/cache-membuffer.c
Author: ivan
Date: Tue May 12 17:42:46 2015
New Revision: 1679015
URL: http://svn.apache.org/r1679015
Log:
On the '1.9-cache-improvements' branch: Fix a bug of combining full cache
keys.
* subversion/libsvn_subr/cache-membuffer.c
(combine_key, combine_long_key): Use CACHE->PREFIX.ENTRY_KEY.KEY_LEN to
get length of cache prefix instead of PREFIX.FULL_KEY.SIZE which is just
size of allocated buffer and could be greater.
Modified:
subversion/branches/1.9-cache-improvements/subversion/libsvn_subr/cache-membuffer.c
Modified: subversion/branches/1.9-cache-improvements/subversion/libsvn_subr/cache-membuffer.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.9-cache-improvements/subversion/libsvn_subr/cache-membuffer.c?rev=1679015&r1=1679014&r2=1679015&view=diff
==============================================================================
--- subversion/branches/1.9-cache-improvements/subversion/libsvn_subr/cache-membuffer.c (original)
+++ subversion/branches/1.9-cache-improvements/subversion/libsvn_subr/cache-membuffer.c Tue May 12 17:42:46 2015
@@ -2615,7 +2615,7 @@ combine_long_key(svn_membuffer_cache_t *
{
apr_uint32_t *digest_buffer;
char *key_copy;
- apr_size_t prefix_len = cache->prefix.full_key.size;
+ apr_size_t prefix_len = cache->prefix.entry_key.key_len;
apr_size_t aligned_key_len;
/* handle variable-length keys */
@@ -2654,13 +2654,13 @@ combine_key(svn_membuffer_cache_t *cache
/* short, fixed-size keys are the most common case */
if (key_len != APR_HASH_KEY_STRING && key_len <= 16)
{
+ const apr_size_t prefix_len = cache->prefix.entry_key.key_len;
/* Copy of *key, padded with 0.
* We put it just behind the prefix already copied into the COMBINED_KEY.
* The buffer space has been allocated when the cache was created. */
- apr_uint64_t *data = (void *)((char *)cache->combined_key.full_key.data +
- cache->prefix.full_key.size);
- assert(cache->combined_key.full_key.size >
- cache->prefix.full_key.size + 16);
+ apr_uint64_t *data = (void *)((char *)cache->combined_key.full_key.data +
+ prefix_len);
+ assert(prefix_len + 16 <= cache->combined_key.full_key.size);
data[0] = 0;
data[1] = 0;