Skip to content

Commit f691a29

Browse files
authored
Merge pull request ddnet#9576 from Robyt3/Png-Create-Struct-Error-Handling
Also print errors/warnings for `png_create_read_struct` function
2 parents d3ab109 + c1de7ff commit f691a29

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/engine/gfx/image_loader.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,12 @@ bool CImageLoader::LoadPng(CByteBufferReader &Reader, const char *pContextName,
138138
{
139139
CUserErrorStruct UserErrorStruct = {&Reader, pContextName, {}};
140140

141-
png_structp pPngStruct = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
141+
if(setjmp(UserErrorStruct.m_JmpBuf))
142+
{
143+
return false;
144+
}
145+
146+
png_structp pPngStruct = png_create_read_struct(PNG_LIBPNG_VER_STRING, &UserErrorStruct, PngErrorCallback, PngWarningCallback);
142147
if(pPngStruct == nullptr)
143148
{
144149
log_error("png", "libpng internal failure: png_create_read_struct failed.");
@@ -168,7 +173,6 @@ bool CImageLoader::LoadPng(CByteBufferReader &Reader, const char *pContextName,
168173
Cleanup();
169174
return false;
170175
}
171-
png_set_error_fn(pPngStruct, &UserErrorStruct, PngErrorCallback, PngWarningCallback);
172176

173177
pPngInfo = png_create_info_struct(pPngStruct);
174178
if(pPngInfo == nullptr)

0 commit comments

Comments
 (0)