- while (i > 0 && KEY(H, PARENT(i)) > KEY(H, i)) {
- struct xbt_heapItem tmp = H->items[i];
- H->items[i] = H->items[PARENT(i)];
- H->items[PARENT(i)] = tmp;
- H->update_callback ? H->update_callback(CONTENT(H, i), i) : NULL;
- i = PARENT(i);
+ xbt_heap_item_t items = H->items;
+ int p = PARENT(i);
+ while (i > 0 && items[p].key > items[i].key) {
+ struct xbt_heap_item tmp = items[i];
+ items[i] = items[p];
+ items[p] = tmp;
+ if (H->update_callback)
+ H->update_callback(items[i].content, i);
+ i = p;
+ p = PARENT(i);