github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/database/leveldb/src/patch/issue185.patch (about)

     1   db/c.cc             | 5 ++++-
     2   include/leveldb/c.h | 1 +
     3   2 files changed, 5 insertions(+), 1 deletion(-)
     4  
     5  diff --git a/db/c.cc b/db/c.cc
     6  index 08ff0ad..ec9e05b 100644
     7  --- a/db/c.cc
     8  +++ b/db/c.cc
     9  @@ -92,6 +92,7 @@ struct leveldb_filterpolicy_t : public FilterPolicy {
    10         const char* const* key_array, const size_t* key_length_array,
    11         int num_keys,
    12         size_t* filter_length);
    13  +  void (*free_)(void*);
    14     unsigned char (*key_match_)(
    15         void*,
    16         const char* key, size_t length,
    17  @@ -115,7 +116,7 @@ struct leveldb_filterpolicy_t : public FilterPolicy {
    18       size_t len;
    19       char* filter = (*create_)(state_, &key_pointers[0], &key_sizes[0], n, &len);
    20       dst->append(filter, len);
    21  -    free(filter);
    22  +    (*free_)(filter);
    23     }
    24   
    25     virtual bool KeyMayMatch(const Slice& key, const Slice& filter) const {
    26  @@ -478,6 +479,7 @@ leveldb_filterpolicy_t* leveldb_filterpolicy_create(
    27           const char* const* key_array, const size_t* key_length_array,
    28           int num_keys,
    29           size_t* filter_length),
    30  +    void (*free_filter)(void*),
    31       unsigned char (*key_may_match)(
    32           void*,
    33           const char* key, size_t length,
    34  @@ -487,6 +489,7 @@ leveldb_filterpolicy_t* leveldb_filterpolicy_create(
    35     result->state_ = state;
    36     result->destructor_ = destructor;
    37     result->create_ = create_filter;
    38  +  result->free_ = free_filter;
    39     result->key_match_ = key_may_match;
    40     result->name_ = name;
    41     return result;
    42  diff --git a/include/leveldb/c.h b/include/leveldb/c.h
    43  index 1fa5886..9d1921b 100644
    44  --- a/include/leveldb/c.h
    45  +++ b/include/leveldb/c.h
    46  @@ -229,6 +229,7 @@ extern leveldb_filterpolicy_t* leveldb_filterpolicy_create(
    47           const char* const* key_array, const size_t* key_length_array,
    48           int num_keys,
    49           size_t* filter_length),
    50  +    void (*free_filter)(void*),
    51       unsigned char (*key_may_match)(
    52           void*,
    53           const char* key, size_t length,