What about this (to maintain comment withouth needing more lines)?
```
  if (newsize == HT_INIT_SIZE) {
    // Use the small array inside the hashdict structure.
    newarray = ht->ht_smallarray;
    oldarray = ht->ht_array == newarray ?
      // Moving from ht_smallarray to ht_smallarray!  Happens when there
      // are many removed items.  Copy the items to be able to clean up
      // removed items.
      memmove(temparray, newarray, sizeof(temparray)):
      ht->ht_array;
  } else {
    // Allocate an array.
    newarray = xmalloc(sizeof(hashitem_T) * newsize);
    oldarray = ht->ht_array;
  }
```

I could even try to apply that once again and leave the whole block as this:
```
  newarray = newsize == HT_INIT_SIZE ?
    // Use the small array inside the hashdict structure.
    ht->ht_smallarray:
    xmalloc(sizeof(hashitem_T) * newsize);
  oldarray = newsize == HT_INIT_SIZE ?
    (ht->ht_array == newarray ?
      // Moving from ht_smallarray to ht_smallarray!  Happens when there
      // are many removed items.  Copy the items to be able to clean up
      // removed items.
      memmove(temparray, newarray, sizeof(temparray)):
      ht->ht_array):
    ht->ht_array;
```

But perhaps that's too much. What do you think?