Changeset: bf9cc82d4d74 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bf9cc82d4d74
Modified Files:
        gdk/gdk_string.c
Branch: Jun2020
Log Message:

Simplify and get rid of initialization that is in the way of bug discovery.


diffs (64 lines):

diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -279,9 +279,11 @@ strPut(Heap *h, var_t *dst, const char *
                pad = 0;
        }
 
+       pad += extralen;
+
        /* check heap for space (limited to a certain maximum after
         * which nils are inserted) */
-       if (h->free + pad + len + extralen >= h->size) {
+       if (h->free + pad + len >= h->size) {
                size_t newsize = MAX(h->size, 4096);
 
                /* double the heap size until we have enough space */
@@ -290,11 +292,11 @@ strPut(Heap *h, var_t *dst, const char *
                                newsize <<= 1;
                        else
                                newsize += 4 * 1024 * 1024;
-               } while (newsize <= h->free + pad + len + extralen);
+               } while (newsize <= h->free + pad + len);
 
                assert(newsize);
 
-               if (h->free + pad + len + extralen >= (size_t) VAR_MAX) {
+               if (h->free + pad + len >= (size_t) VAR_MAX) {
                        GDKerror("string heaps gets larger than %zuGiB.\n", 
(size_t) VAR_MAX >> 30);
                        return 0;
                }
@@ -302,21 +304,16 @@ strPut(Heap *h, var_t *dst, const char *
                if (HEAPextend(h, newsize, true) != GDK_SUCCEED) {
                        return 0;
                }
-#ifndef NDEBUG
-               /* fill should solve initialization problems within
-                * valgrind */
-               memset(h->base + h->free, 0, h->size - h->free);
-#endif
 
                /* make bucket point into the new heap */
                bucket = ((stridx_t *) h->base) + off;
        }
 
        /* insert string */
-       pos = h->free + pad + extralen;
+       pos = h->free + pad;
        *dst = (var_t) pos;
-       if (pos > h->free)
-               memset(h->base + h->free, 0, pos - h->free);
+       if (pad > 0)
+               memset(h->base + h->free, 0, pad);
        memcpy(h->base + pos, v, len);
        if (h->hashash) {
                ((BUN *) (h->base + pos))[-1] = strhash;
@@ -324,7 +321,7 @@ strPut(Heap *h, var_t *dst, const char *
                ((BUN *) (h->base + pos))[-2] = (BUN) len;
 #endif
        }
-       h->free += pad + len + extralen;
+       h->free += pad + len;
        h->dirty = true;
 
        /* maintain hash table */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to