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)
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(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
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()
if(NOT MSVC)

View File

@ -270,7 +270,7 @@ static int tolua_AllToLua_StringToMobType00(lua_State* tolua_S)
else
#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);
tolua_pushnumber(LuaState, static_cast<lua_Number>(MobType));
tolua_pushcppstring(LuaState, a_MobString);

View File

@ -6,7 +6,7 @@
inline unsigned int GetTime()
{
// 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

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"
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:

View File

@ -243,6 +243,7 @@ void cEntity::Destroy(bool a_ShouldBroadcast)
this->GetUniqueID(), this->GetClass(),
ParentChunkCoords.m_ChunkX, ParentChunkCoords.m_ChunkZ
);
UNUSED(ParentChunkCoords); // Non Debug mode only
// Make sure that RemoveEntity returned a valid smart pointer
// 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(),
OldChunkCoords.m_ChunkX, OldChunkCoords.m_ChunkZ
);
UNUSED(OldChunkCoords); // Non Debug mode only
a_World->AddEntity(a_OldWorld.RemoveEntity(*this));
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 cRecipe * BestRecipe = 0;
const cRecipe * BestRecipe = nullptr;
for (RecipeList::const_iterator itr = m_pState->Recipes.begin(); itr != m_pState->Recipes.end(); ++itr)
{
const cRecipe & Recipe = *itr;

View File

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

View File

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

View File

@ -72,6 +72,12 @@ bool cRoot::m_RunAsService = false;
#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)
{
LOGD("Terminate event raised from std::signal");
@ -115,6 +121,10 @@ static void NonCtrlHandler(int a_Signal)
default: break;
}
}
#if __clang_major__ >= 5
#pragma clang diagnostic pop
#endif
#endif // _DEBUG