Making the code as similar as possible will make it simpler to merge the two.
HvARRAY(hv) = (HE**) a;
aep = (HE**)a;
- for (i=0; i<oldsize; i++,aep++) {
- HE **oentry = aep;
- HE *entry = *aep;
- HE **bep;
+ for (i=0; i<oldsize; i++) {
+ HE **oentry = aep + i;
+ HE *entry = aep[i];
if (!entry) /* non-existent */
continue;
- bep = aep+oldsize;
do {
- if ((HeHASH(entry) & newsize) != (U32)i) {
+ U32 j = (HeHASH(entry) & newsize);
+ if (j != (U32)i) {
*oentry = HeNEXT(entry);
- HeNEXT(entry) = *bep;
- *bep = entry;
+ HeNEXT(entry) = aep[j];
+ aep[j] = entry;
}
else {
oentry = &HeNEXT(entry);
return;
aep = (HE**)a;
- for (i=0; i<oldsize; i++,aep++) {
- HE **oentry = aep;
- HE *entry = *aep;
+ for (i=0; i<oldsize; i++) {
+ HE **oentry = aep + i;
+ HE *entry = aep[i];
if (!entry) /* non-existent */
continue;
I32 j = (HeHASH(entry) & newsize);
if (j != i) {
- j -= i;
*oentry = HeNEXT(entry);
HeNEXT(entry) = aep[j];
aep[j] = entry;