Despite the check never happening (player->GetAverageItemLevel() < 0 is impossible), it is more efficient.
Also improves codestyle consistency. Original fix by @emsy.
Fix invisible wall issues in MMAPS caused by tile connections not being extracted correctly.
This reverts aa645683b8 and restores an old version of recastnavigation, most likely 1be9de72d8 .
Re-extracting MMAPS is required.
- fixed arena season title achievements and rewards
- added mailtemplate support for `achievement_reward` table
- fixed typo in GetBattleMasterBG which causes achievement reward mail expire in 1 day
Ref #8777
Disable script type SMART_SCRIPT_TYPE_TIMED_ACTIONLIST actions if they are trying to overwrite the timed action list while iterating it.
This was invalidating the iterator and deleting any smart action stored in it, including the current executed one.
Valgrind log:
Invalid read of size 1
at SmartScript::OnUpdate(unsigned int) (SmartScript.cpp:3258)
by SmartAI::UpdateAI(unsigned int) (SmartAI.cpp:331)
by Creature::Update(unsigned int) (Creature.cpp:544)
Address 0x1807d9b2 is 10 bytes after a block of size 40 alloc'd
at operator new(unsigned long) (vg_replace_malloc.c:319)
...
by SmartAIMgr::LoadSmartAIFromDB() (SmartScriptMgr.cpp:231)
by World::SetInitialWorldSettings() (World.cpp:1724)
by Master::Run() (Master.cpp:169)
by main (Main.cpp:142)
Core/Warden: Fix crash
Fix NULL dereference crash in case Warden is disabled (in configs or on Mac OS X platform) and client sends a CMSG_WARDEN_DATA opcode
In case of dynamic file names don't store the FILE* handle in a shared class variable but keep it only at function scope.
Valgrind log:
at _IO_un_link (genops.c:69)
by fclose@@GLIBC_2.2.5 (iofclose.c:55)
by AppenderFile::CloseFile() (AppenderFile.cpp:94)
by AppenderFile::_write(LogMessage const&) (AppenderFile.cpp:66)
by Appender::write(LogMessage&) (Appender.cpp:102)
by Logger::write(LogMessage&) const (Logger.cpp:63)
by Log::write(LogMessage*) (Log.cpp:279)
by Log::vlog(std::string const&, LogLevel, char const*, __va_list_tag*) (Log.cpp:267)
by Log::outMessage(std::string const&, LogLevel, char const*, ...) (Log.h:129)
Address 0x2a1bd2d0 is 0 bytes inside a block of size 568 free'd
at free (vg_replace_malloc.c:468)
by fclose@@GLIBC_2.2.5 (iofclose.c:85)
by AppenderFile::CloseFile() (AppenderFile.cpp:94)
by AppenderFile::_write(LogMessage const&) (AppenderFile.cpp:66)
by Appender::write(LogMessage&) (Appender.cpp:102)
by Logger::write(LogMessage&) const (Logger.cpp:63)
by Log::write(LogMessage*) (Log.cpp:279)
by Log::vlog(std::string const&, LogLevel, char const*, __va_list_tag*) (Log.cpp:267)
by Log::outMessage(std::string const&, LogLevel, char const*, ...) (Log.h:129)
Ignore "w" flag and always use "a" for log files with dynamic name since the file handle is created at every log line and "w" would delete any other logged line from previous _write() calls.
The best solution would be to overwrite only at first call and append at any other call.
Handle SymTagData with inner type of SymTagPointerType.
Increase buffer sizes to avoid buffer overflows.
Avoid infinite loops by logging the children of each type only once.
Avoid too deep nesting by adding a max nesting level.
Print the address for arrays instead of just the name.