1
0

Fixed Clang 5.0 compile errors (#4085)

* Fixed Clang 5.0 compile errors

* Fixed wrong comment

* Only disable warnings in Clang 5 or higher

* Added a CMake condition for the Clang 5 no-zero-as-null-pointer-constant warning

* Now using the use_nullptr branch of the Cuberite specific SQLiteCpp fork
This commit is contained in:
bibo38 2017-12-21 12:36:58 +01:00 committed by Alexander Harkness
parent 72616e7eb9
commit 532731e6f4
11 changed files with 39 additions and 8 deletions

@ -1 +1 @@
Subproject commit 7e9983b00fb44c2e569ba54bfee6f548496d7f61 Subproject commit 1c83894db9deeea32418089e2ffd0c5d3af85b8b

View File

@ -167,8 +167,11 @@ set_source_files_properties(${BINDING_OUTPUTS} PROPERTIES GENERATED TRUE)
set_source_files_properties(${CMAKE_SOURCE_DIR}/src/Bindings/Bindings.cpp PROPERTIES COMPILE_FLAGS -Wno-error) set_source_files_properties(${CMAKE_SOURCE_DIR}/src/Bindings/Bindings.cpp PROPERTIES COMPILE_FLAGS -Wno-error)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set_source_files_properties(Bindings.cpp PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS} "-Wno-old-style-cast -Wno-missing-prototypes") if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5) # Workaround for VERSION_GREATER_EQUAL, which is only supported on CMake 3.7+
set(ADDITIONAL_FLAGS "-Wno-zero-as-null-pointer-constant")
endif()
set_source_files_properties(Bindings.cpp PROPERTIES COMPILE_FLAGS "-Wno-old-style-cast -Wno-missing-prototypes ${ADDITIONAL_FLAGS}")
endif() endif()
if(NOT MSVC) if(NOT MSVC)

View File

@ -270,7 +270,7 @@ static int tolua_AllToLua_StringToMobType00(lua_State* tolua_S)
else else
#endif #endif
{ {
const AString a_MobString = tolua_tocppstring(LuaState, 1, 0); const AString a_MobString = tolua_tocppstring(LuaState, 1, nullptr);
eMonsterType MobType = cMonster::StringToMobType(a_MobString); eMonsterType MobType = cMonster::StringToMobType(a_MobString);
tolua_pushnumber(LuaState, static_cast<lua_Number>(MobType)); tolua_pushnumber(LuaState, static_cast<lua_Number>(MobType));
tolua_pushcppstring(LuaState, a_MobString); tolua_pushcppstring(LuaState, a_MobString);

View File

@ -6,7 +6,7 @@
inline unsigned int GetTime() inline unsigned int GetTime()
{ {
// NB: For caveats, please see https://stackoverflow.com/a/14505248 // NB: For caveats, please see https://stackoverflow.com/a/14505248
return static_cast<unsigned int>(std::chrono::seconds(time(0)).count()); return static_cast<unsigned int>(std::chrono::seconds(time(nullptr)).count());
} }
// tolua_end // tolua_end

View File

@ -26,6 +26,14 @@ extern "C"
// Hotpatching the Macro to prevent a Clang Warning (0 for pointer used)
#undef lua_tostring
#define lua_tostring(L, i) lua_tolstring(L, (i), nullptr)
// fwd: "SQLite/lsqlite3.c" // fwd: "SQLite/lsqlite3.c"
extern "C" extern "C"
{ {

View File

@ -43,6 +43,14 @@
// Hotpatching the Macro to prevent a Clang Warning (0 for pointer used)
#undef lua_tostring
#define lua_tostring(L, i) lua_tolstring(L, (i), nullptr)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// LuaCommandHandler: // LuaCommandHandler:

View File

@ -243,6 +243,7 @@ void cEntity::Destroy(bool a_ShouldBroadcast)
this->GetUniqueID(), this->GetClass(), this->GetUniqueID(), this->GetClass(),
ParentChunkCoords.m_ChunkX, ParentChunkCoords.m_ChunkZ ParentChunkCoords.m_ChunkX, ParentChunkCoords.m_ChunkZ
); );
UNUSED(ParentChunkCoords); // Non Debug mode only
// Make sure that RemoveEntity returned a valid smart pointer // Make sure that RemoveEntity returned a valid smart pointer
// Also, not storing the returned pointer means automatic destruction // Also, not storing the returned pointer means automatic destruction
@ -1599,6 +1600,7 @@ bool cEntity::DoMoveToWorld(cWorld * a_World, bool a_ShouldSendRespawn, Vector3d
a_OldWorld.GetName().c_str(), a_World->GetName().c_str(), a_OldWorld.GetName().c_str(), a_World->GetName().c_str(),
OldChunkCoords.m_ChunkX, OldChunkCoords.m_ChunkZ OldChunkCoords.m_ChunkX, OldChunkCoords.m_ChunkZ
); );
UNUSED(OldChunkCoords); // Non Debug mode only
a_World->AddEntity(a_OldWorld.RemoveEntity(*this)); a_World->AddEntity(a_OldWorld.RemoveEntity(*this));
cRoot::Get()->GetPluginManager()->CallHookEntityChangedWorld(*this, a_OldWorld); cRoot::Get()->GetPluginManager()->CallHookEntityChangedWorld(*this, a_OldWorld);
}); });

View File

@ -272,7 +272,7 @@ void cFurnaceRecipe::ClearRecipes(void)
const cFurnaceRecipe::cRecipe * cFurnaceRecipe::GetRecipeFrom(const cItem & a_Ingredient) const const cFurnaceRecipe::cRecipe * cFurnaceRecipe::GetRecipeFrom(const cItem & a_Ingredient) const
{ {
const cRecipe * BestRecipe = 0; const cRecipe * BestRecipe = nullptr;
for (RecipeList::const_iterator itr = m_pState->Recipes.begin(); itr != m_pState->Recipes.end(); ++itr) for (RecipeList::const_iterator itr = m_pState->Recipes.begin(); itr != m_pState->Recipes.end(); ++itr)
{ {
const cRecipe & Recipe = *itr; const cRecipe & Recipe = *itr;

View File

@ -20,7 +20,7 @@ class cNetworkLookup :
public: public:
cNetworkLookup(); cNetworkLookup();
~cNetworkLookup(); ~cNetworkLookup() override;
/** Schedule a lookup task for execution. */ /** Schedule a lookup task for execution. */
void ScheduleLookup(std::function<void()> a_Lookup); void ScheduleLookup(std::function<void()> a_Lookup);

View File

@ -72,7 +72,7 @@ cRoot::cRoot(void) :
cRoot::~cRoot() cRoot::~cRoot()
{ {
s_Root = 0; s_Root = nullptr;
} }

View File

@ -72,6 +72,12 @@ bool cRoot::m_RunAsService = false;
#ifndef _DEBUG #ifndef _DEBUG
// Because SIG_DFL or SIG_IGN could be NULL instead of nullptr, we need to disable the Clang warning here
#if __clang_major__ >= 5
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"
#endif
static void NonCtrlHandler(int a_Signal) static void NonCtrlHandler(int a_Signal)
{ {
LOGD("Terminate event raised from std::signal"); LOGD("Terminate event raised from std::signal");
@ -115,6 +121,10 @@ static void NonCtrlHandler(int a_Signal)
default: break; default: break;
} }
} }
#if __clang_major__ >= 5
#pragma clang diagnostic pop
#endif
#endif // _DEBUG #endif // _DEBUG