Fix incorrect check for invalid assets

scene_man
En Yi 2023-09-02 19:51:36 +08:00
parent e32fd0fc55
commit 789d1b2577
2 changed files with 7 additions and 4 deletions

View File

@ -50,7 +50,7 @@ bool load_from_rres(const char* file, Assets_t* assets)
rresResourceChunk chunk = rresLoadResourceChunk(file, res_id); // Hardcoded
bool okay = false;
if (chunk.info.id == res_id)
if (chunk.info.baseSize > 0)
{
FILE* in_file = fmemopen(chunk.data.raw, chunk.info.baseSize, "rb");

View File

@ -91,7 +91,7 @@ Texture2D* add_texture_rres(Assets_t* assets, const char* name, const char* file
rresResourceChunk chunk = rresLoadResourceChunk(rres_file->fname, res_id);
Texture2D* out_tex = NULL;
if (chunk.info.id == res_id)
if (chunk.info.baseSize > 0)
{
//Expect RAW type of png extension
Image image = LoadImageFromMemory(GetFileExtension(filename), chunk.data.raw, chunk.info.baseSize);
@ -319,16 +319,19 @@ LevelPack_t* uncompress_level_pack(Assets_t* assets, const char* name, const cha
LevelPack_t* add_level_pack_rres(Assets_t* assets, const char* name, const char* filename, const RresFileInfo_t* rres_file)
{
int res_id = rresGetResourceId(rres_file->dir, filename);
rresResourceChunk chunk = rresLoadResourceChunk(rres_file->fname, res_id);
LevelPack_t* pack = NULL;
if ( chunk.info.id == res_id)
if (chunk.info.baseSize > 0 && strcmp(".lpk", (const char*)(chunk.data.props + 1)) == 0)
{
FILE* f_in = fmemopen(chunk.data.raw, chunk.info.baseSize, "rb");
pack = add_level_pack_zst(assets, name, f_in);
fclose(f_in);
}
else
{
printf("Cannot load level pack for %s\n", name);
}
rresUnloadResourceChunk(chunk);
return pack;
}