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);