Changeset 0f15f12 for dict.c


Ignore:
Timestamp:
Aug 20, 2009, 9:19:01 PM (12 years ago)
Author:
Anders Kaseorg <andersk@mit.edu>
Branches:
master, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
f278ff3
Parents:
5ebc202
git-author:
Anders Kaseorg <andersk@mit.edu> (08/20/09 21:14:37)
git-committer:
Anders Kaseorg <andersk@mit.edu> (08/20/09 21:19:01)
Message:
owl_list_grow, owl_dict_insert_element: Don’t use fuzzy math.

• Make sure to allocate at least as many elements as were requested.
• Don’t use floating point math to compute the expansion amount.
• In owl_dict_insert_element, reallocate using the right element size
  instead of relying on the GROWAT fudge factor (WTF?).

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
File:
1 edited

Legend:

Unmodified
Added
Removed
  • dict.c

    r8bce750 r0f15f12  
    1313
    1414#define INITSIZE 30
    15 #define GROWAT 2
    16 #define GROWBY 1.5
     15#define GROWBY 3 / 2
    1716
    1817int owl_dict_create(owl_dict *d) {
     
    9392    return(-2);
    9493  } else {
    95     if ((d->size+1) > (d->avail/GROWAT)) {
    96       d->els=owl_realloc(d->els, d->avail*GROWBY*sizeof(void *));
    97       d->avail=d->avail*GROWBY;
     94    if (d->size + 1 > d->avail) {
     95      int avail = MAX(d->avail * GROWBY, d->size + 1);
     96      d->els = owl_realloc(d->els, avail * sizeof(owl_dict_el));
     97      d->avail = avail;
    9898      if (d->els==NULL) return(-1);
    9999    }
Note: See TracChangeset for help on using the changeset viewer.