This isn't quite how I intended the array API to be used, although it works. Instead of treating the array simply as a pool over memory, I usually think of it as an actual array with the `asize` field as an opaque implementation detail. To that end, you can just write:

```c
for (i = 0; i < commit->out_degree; ++i) {
    if (!commit->parents[i]->uninteresting) {
        git_commit_list_node **nodeptr = git_array_alloc(pending);
        GITERR_CHECK_ALLOC(nodeptr);
        *nodeptr = commit->parents[i];
    }
}
```

If I read this code right, I think that should be equivalent, allocating space for the next parent (growing the array if needed) and then setting the next entry to the parent pointer.