More checks

This commit is contained in:
igor725 2024-04-05 11:39:28 +03:00
parent ecf1a82781
commit 2e687ed4af
No known key found for this signature in database
GPG Key ID: 46F13BBE46F8569D
2 changed files with 8 additions and 3 deletions

View File

@ -35,8 +35,13 @@ extern "C" {
EXPORT const char* MODULE_NAME = "libScePngDec";
EXPORT SYSV_ABI int32_t scePngDecCreate(const ScePngDecCreateParam*, void* mem, uint32_t size, ScePngDecHandle* handle) {
EXPORT SYSV_ABI int32_t scePngDecCreate(const ScePngDecCreateParam* param, void* mem, uint32_t size, ScePngDecHandle* handle) {
LOG_USE_MODULE(libScePngDec);
if (mem == nullptr) return Err::INVALID_ADDR;
if (size < sizeof(_PngHandle)) return Err::INVALID_SIZE;
if (param->attribute > 1) LOG_CRIT(L"Unhandled attribute");
auto pngh = (_PngHandle*)mem;
pngh->png = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
if (pngh->png == nullptr) return Err::FATAL;
@ -145,12 +150,12 @@ EXPORT SYSV_ABI int32_t scePngDecParseHeader(const ScePngDecParseParam* param, S
png_read_info(png_ptr, info_ptr);
int bitdepth, color, filter, inter, num_trans;
png_get_IHDR(png_ptr, info_ptr, &ii->imageWidth, &ii->imageHeight, &bitdepth, &color, &inter, nullptr, &filter);
ii->colorSpace = map_png_color(color);
if (inter == 1) ii->imageFlag |= SCE_PNG_DEC_IMAGE_FLAG_ADAM7_INTERLACE;
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) ii->imageFlag |= SCE_PNG_DEC_IMAGE_FLAG_TRNS_CHUNK_EXIST;
png_destroy_read_struct(&png_ptr, &info_ptr, nullptr);
return Ok;
}

View File

@ -34,4 +34,4 @@ set(PNG_TOOLS OFF CACHE BOOL "" FORCE)
set(PNG_TESTS OFF CACHE BOOL "" FORCE)
set(SKIP_INSTALL_ALL OFF CACHE BOOL "" FORCE)
add_subdirectory(libpng)
add_dependencies(png_shared zlib)
add_dependencies(png_shared zlib zlibstatic)