]> git.cworth.org Git - mnemon/blobdiff - mnemon.c
Avoid unnecessary (and potentially dangerous) memmove
[mnemon] / mnemon.c
index 737298ed045f4877765118845e2626050ec816bc..25ba65fac17040f6b6600c6defa9d0bebcf1638f 100644 (file)
--- a/mnemon.c
+++ b/mnemon.c
@@ -366,12 +366,14 @@ mnemon_get_bin (mnemon_t  *mnemon,
        else if (mnemon->bins[i].count > count)
            break;
 
-    mnemon_bins_grow (mnemon);
+    if (mnemon->num_bins == mnemon->bins_size)
+       mnemon_bins_grow (mnemon);
 
     bin = &mnemon->bins[i];
 
     /* Make room to insert new bin at its sorted location. */
-    memmove (bin + 1, bin, (mnemon->num_bins - i) * sizeof (bin_t));
+    if (i < mnemon->num_bins)
+       memmove (bin + 1, bin, (mnemon->num_bins - i) * sizeof (bin_t));
     mnemon->num_bins++;
 
     bin_init (bin, count);