のST5Decompress()関数を次のようにいじくります。
monapi_cmemoryinfo* ST5Decompress(monapi_cmemoryinfo* mi)
{
int64_t size = GetST5DecompressedSize(mi);
+ char flag = 1;
+ if (size == -1) { /* not osacmp */
+ size = mi->Size;
+ flag = 0;
+ }
if (size < 0) return NULL;
// if size >= 4GB abort...
if ((size >> 32) > 0) return NULL;
monapi_cmemoryinfo* ret = new monapi_cmemoryinfo();
if (!monapi_cmemoryinfo_create(ret, (dword)(size + 1), 0))
{
monapi_cmemoryinfo_delete(ret);
return NULL;
}
ret->Size--;
+ if (flag) {
if (tek_decode(mi->Size, mi->Data, ret->Data) != 0) {
// Decompress failed
monapi_cmemoryinfo_dispose(ret);
monapi_cmemoryinfo_delete(ret);
return NULL;
}
+ } else
+ memcpy(ret->Data, mi->Data, ret->Size);
ret->Data[ret->Size] = 0;
return ret;
}