X-Git-Url: https://git.cworth.org/git?p=mnemon;a=blobdiff_plain;f=mnemon.c;h=f35c0b7aabd8696520aef61f03239661b3ec65ba;hp=a1872bcf9632b9b0b00debd2d6cd0c1a5ba490b9;hb=1165471b98eef572bc87e788e7c3c519b9ef73bf;hpb=f2912ab7a76a0362c41ca8b336cc6933f4f9fc30 diff --git a/mnemon.c b/mnemon.c index a1872bc..f35c0b7 100644 --- a/mnemon.c +++ b/mnemon.c @@ -345,10 +345,16 @@ mnemon_get_bin (mnemon_t *mnemon, for (i = 0; i < mnemon->num_bins; i++) if (mnemon->bins[i].count == count) return &mnemon->bins[i]; + else if (mnemon->bins[i].count > count) + break; mnemon_bins_grow (mnemon); - bin = &mnemon->bins[mnemon->num_bins++]; + 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)); + mnemon->num_bins++; bin_init (bin, count);