あっちこっちに不要なキャストがあるな
んでとりあえず

if (wfp->prevdata == NULL) {
 wfp2 = fpEntTy[i];
} else {
 wfp2 = wfp->prevdata;
}
HogeDel(i,wfp);
wfp = wfp2;
break;

これは

HogeDel(i,wfp);
wfp = fpEntTy[i];
break;

の間違いじゃないのか?
その下も同様に

HogeDel(i,wfp);
//free(wfp);
wfp = fpEntTy[i];
break;