[Groonga-commit] groonga/groonga at 8c992cb [master] lz4: introduce "packed_value" and "packed_value_len" variables for readability

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Oct 21 23:24:39 JST 2014


Kouhei Sutou	2014-10-21 23:24:39 +0900 (Tue, 21 Oct 2014)

  New Revision: 8c992cb6ae1ce64d9da20ce6e29279092c50b85b
  https://github.com/groonga/groonga/commit/8c992cb6ae1ce64d9da20ce6e29279092c50b85b

  Message:
    lz4: introduce "packed_value" and "packed_value_len" variables for readability
    
    Because "lz4_value" and "lz4_value_len" didn't represent LZ4 compressed
    data.

  Modified files:
    lib/store.c

  Modified: lib/store.c (+19 -11)
===================================================================
--- lib/store.c    2014-10-21 22:25:48 +0900 (6aa26c8)
+++ lib/store.c    2014-10-21 23:24:39 +0900 (33d6544)
@@ -1232,24 +1232,28 @@ grn_ja_ref_zlib(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_io_win *iw, uint32_t *v
 static void *
 grn_ja_ref_lz4(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_io_win *iw, uint32_t *value_len)
 {
+  void *packed_value;
+  int packed_value_len;
   void *lz4_value;
   int lz4_value_len;
   int lz4_out_len;
 
-  if (!(lz4_value = grn_ja_ref_raw(ctx, ja, id, iw, &lz4_value_len))) {
+  if (!(packed_value = grn_ja_ref_raw(ctx, ja, id, iw, &packed_value_len))) {
     iw->value = NULL;
     *value_len = 0;
     return NULL;
   }
-  lz4_out_len = *((uint64_t *)lz4_value);
+  lz4_out_len = *((uint64_t *)packed_value);
   if (!(iw->value = GRN_MALLOC(lz4_out_len))) {
     iw->value = NULL;
     *value_len = 0;
     return NULL;
   }
-  if (LZ4_decompress_safe((const char *)((uint64_t *)lz4_value + 1),
+  lz4_value = (void *)((uint64_t *)packed_value + 1);
+  lz4_value_len = packed_value_len - sizeof(uint64_t);
+  if (LZ4_decompress_safe((const char *)(lz4_value),
                           (char *)(iw->value),
-                          lz4_value_len - sizeof(uint64_t),
+                          lz4_value_len,
                           lz4_out_len) < 0) {
     GRN_FREE(iw->value);
     iw->value = NULL;
@@ -1361,7 +1365,9 @@ grn_ja_put_lz4(grn_ctx *ctx, grn_ja *ja, grn_id id,
                void *value, uint32_t value_len, int flags, uint64_t *cas)
 {
   grn_rc rc;
-  void *lz4_value;
+  void *packed_value;
+  int packed_value_len;
+  char *lz4_value;
   int lz4_value_len;
 
   if (value_len == 0) {
@@ -1377,19 +1383,21 @@ grn_ja_put_lz4(grn_ctx *ctx, grn_ja *ja, grn_id id,
 
   lz4_value_len = LZ4_compressBound(value_len);
 
-  if (!(lz4_value = GRN_MALLOC(lz4_value_len + sizeof(uint64_t)))) {
+  if (!(packed_value = GRN_MALLOC(lz4_value_len + sizeof(uint64_t)))) {
     return GRN_NO_MEMORY_AVAILABLE;
   }
-  lz4_value_len = LZ4_compress((const char*)value, (char *)((uint64_t *)lz4_value + 1), value_len);
+  lz4_value = (char *)((uint64_t *)packed_value + 1);
+  lz4_value_len = LZ4_compress((const char*)value, lz4_value, value_len);
 
   if (lz4_value_len <= 0) {
-    GRN_FREE(lz4_value);
+    GRN_FREE(packed_value);
     ERR(GRN_LZ4_ERROR, "lz4_compress");
     return ctx->rc;
   }
-  *(uint64_t *)lz4_value = value_len;
-  rc = grn_ja_put_raw(ctx, ja, id, lz4_value, lz4_value_len + sizeof(uint64_t), flags, cas);
-  GRN_FREE(lz4_value);
+  *(uint64_t *)packed_value = value_len;
+  packed_value_len = lz4_value_len + sizeof(uint64_t);
+  rc = grn_ja_put_raw(ctx, ja, id, packed_value, packed_value_len, flags, cas);
+  GRN_FREE(packed_value);
   return rc;
 }
 #endif /* GRN_WITH_LZ4 */
-------------- next part --------------
HTML����������������������������...
다운로드 



More information about the Groonga-commit mailing list
Back to archive index