From 31fda8026bf52024958339e6b8686bcc33d05870 Mon Sep 17 00:00:00 2001 From: Giel van Schijndel Date: Sat, 3 May 2008 10:24:36 +0000 Subject: [PATCH] Don't call function pointers when they're NULL (fixes a segfault bug that occurs when a resource type without release function couldn't be loaded) git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@4896 4a71c877-e1ca-e34f-864e-861f7616d084 --- lib/framework/frameresource.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/framework/frameresource.c b/lib/framework/frameresource.c index f402a168e..88ab2c888 100644 --- a/lib/framework/frameresource.c +++ b/lib/framework/frameresource.c @@ -463,7 +463,10 @@ BOOL resLoadFile(const char *pType, const char *pFile) { debug(LOG_ERROR, "resLoadFile: The load function for resource type \"%s\" failed for file \"%s\"", pType, pFile); FreeResourceFile(Resource); - psT->release(pData); + if (psT->release != NULL) + { + psT->release(pData); + } return false; } @@ -475,7 +478,10 @@ BOOL resLoadFile(const char *pType, const char *pFile) if (!psT->fileLoad(aFileName, &pData)) { debug(LOG_ERROR, "resLoadFile: The load function for resource type \"%s\" failed for file \"%s\"", pType, pFile); - psT->release(pData); + if (psT->release != NULL) + { + psT->release(pData); + } return false; } } @@ -494,7 +500,10 @@ BOOL resLoadFile(const char *pType, const char *pFile) psRes = resDataInit( GetLastResourceFilename(), HashStringIgnoreCase(GetLastResourceFilename()), pData, resBlockID ); if (!psRes) { - psT->release(pData); + if (psT->release != NULL) + { + psT->release(pData); + } return false; }