From 5a4d0b7a4d3ff30521d04594139786c35846a63a Mon Sep 17 00:00:00 2001 From: nillerusr Date: Sun, 8 Oct 2023 07:31:07 +0300 Subject: [PATCH] fix undefined behaviours and jpeg crash on non-windows platforms --- common/imageutils.cpp | 5 ++++- filesystem/basefilesystem.cpp | 2 +- vgui2/vgui_controls/FileOpenDialog.cpp | 3 +++ wscript | 4 ++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/common/imageutils.cpp b/common/imageutils.cpp index 7c690aef..5bb0b741 100644 --- a/common/imageutils.cpp +++ b/common/imageutils.cpp @@ -65,9 +65,12 @@ extern void longjmp( jmp_buf, int ) __attribute__((noreturn)); #define JPEGLIB_USE_STDIO #if ANDROID #include "android/jpeglib/jpeglib.h" -#else +#elif defined WIN32 #include "jpeglib/jpeglib.h" +#else +#include #endif + #undef JPEGLIB_USE_STDIO diff --git a/filesystem/basefilesystem.cpp b/filesystem/basefilesystem.cpp index 26bb8372..aad38434 100644 --- a/filesystem/basefilesystem.cpp +++ b/filesystem/basefilesystem.cpp @@ -4203,7 +4203,7 @@ bool CBaseFileSystem::FindNextFileInVPKOrPakHelper( FindData_t *pFindData ) { V_strncpy( pFindData->findData.cFileName, V_UnqualifiedFileName( pFindData->m_fileMatchesFromVPKOrPak[0] ), sizeof( pFindData->findData.cFileName ) ); pFindData->findData.dwFileAttributes = 0; - delete pFindData->m_fileMatchesFromVPKOrPak.Head(); + delete[] pFindData->m_fileMatchesFromVPKOrPak.Head(); pFindData->m_fileMatchesFromVPKOrPak.RemoveMultipleFromHead( 1 ); return true; diff --git a/vgui2/vgui_controls/FileOpenDialog.cpp b/vgui2/vgui_controls/FileOpenDialog.cpp index d4a098fc..aa481da0 100644 --- a/vgui2/vgui_controls/FileOpenDialog.cpp +++ b/vgui2/vgui_controls/FileOpenDialog.cpp @@ -1500,6 +1500,9 @@ void FileOpenDialog::OnOpen() char pFileName[MAX_PATH]; GetSelectedFileName( pFileName, sizeof( pFileName ) ); + if( !pFileName[0] ) + return; + int nLen = Q_strlen( pFileName ); bool bSpecifiedDirectory = ( pFileName[nLen-1] == '/' || pFileName[nLen-1] == '\\' ) && (!IsOSX() || ( IsOSX() && !Q_stristr( pFileName, ".app" ) ) ); Q_StripTrailingSlash( pFileName ); diff --git a/wscript b/wscript index 9910b29a..7f760500 100644 --- a/wscript +++ b/wscript @@ -239,9 +239,9 @@ def define_platform(conf): '_DLL_EXT=.so' ]) -# if conf.env.DEST_OS != 'win32': + if conf.env.DEST_OS != 'win32': + conf.define('NO_MEMOVERRIDE_NEW_DELETE', 1) # conf.define('NO_MALLOC_OVERRIDE', 1) -# conf.define('NO_MEMOVERRIDE_NEW_DELETE', 1) if conf.options.DEBUG_ENGINE: conf.env.append_unique('DEFINES', [