Need to be free from mem block dumps,
long hfzReadHeader(hfzFile* fs, hfzHeader& fh) {
...
if(hl) {
char* pBuf;
if(!(pBuf = (char*)hfzMalloc(hl))) {
return LIBHFZ_ERROR_ALLOC_FAILED;
}
if(hl!=hfzRead(fs, pBuf, hl)) {
hfzFree(pBuf);
return LIBHFZ_ERROR_READ_FAILED;
}
long rval = hfzHeader_DecodeExtHeaderBuf(fh, pBuf);
if(rval<0) {
hfzFree(pBuf);
return rval;
}
// added: pBuf is mem copied in calls, so only a temp buffer
hfzFree(pBuf);
}
and I found this but bigendian is for toy computers anyway
long hfzByteSwap(void* pData, unsigned long DataSize) {
if(!pData) return LIBHFZ_ERROR_INVALID_HANDLE;
if(!DataSize) return LIBHFZ_ERROR_INVALID_PARAM;
void* pSwap = hfzMalloc(DataSize);
if(!pSwap) return LIBHFZ_ERROR_ALLOC_FAILED;
// re-sort into swap
for(unsigned long i=0; i<DataSize; i++) {
((char*)pSwap)[i] = ((char*)pData)[DataSize - i - 1];
}
// now copy back
hfzMemcpy(pData, pSwap, DataSize);
// Added: Don't need this temp buffer anymore
hfzFree(pSwap);
return LIBHFZ_STATUS_OK;
}