Do we need to be explicit with the comments for case small -> small? What we are doing is to make sure, that
old and new array do not overlap, for every case. Perhaps document with variable names:

```c
bool new_array_is_small = newsize == HT_INIT_SIZE;
bool keep_small_array = ht->ht_array == ht->ht_smallarray && new_array_is_small;

// Make sure that oldarray and newarray do not overlap, so that copying is possible!
oldarray = keep_small_array ? memcpy(temparray, ht->smallarray, sizeof(temparray))
                            : ht->ht_array;
newarray = new_array_is_small ? ht->ht_smallarray
                              : xmalloc(sizeof(hashitem_T) * newsize);

```