diff options
author | linnemannr <linnemannr@gmail.com> | 2015-05-30 10:23:57 +0200 |
---|---|---|
committer | linnemannr <linnemannr@gmail.com> | 2015-05-30 10:23:57 +0200 |
commit | ee34e7131a5a7a308fe431c44741d68a10bb2625 (patch) | |
tree | 8f72bc78944f08e0287bf9c782c8152a138a6489 | |
parent | Merge pull request #2166 from SafwatHalaby/squid (diff) | |
download | cuberite-ee34e7131a5a7a308fe431c44741d68a10bb2625.tar cuberite-ee34e7131a5a7a308fe431c44741d68a10bb2625.tar.gz cuberite-ee34e7131a5a7a308fe431c44741d68a10bb2625.tar.bz2 cuberite-ee34e7131a5a7a308fe431c44741d68a10bb2625.tar.lz cuberite-ee34e7131a5a7a308fe431c44741d68a10bb2625.tar.xz cuberite-ee34e7131a5a7a308fe431c44741d68a10bb2625.tar.zst cuberite-ee34e7131a5a7a308fe431c44741d68a10bb2625.zip |
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | src/Generating/FinishGen.cpp | 6 | ||||
-rw-r--r-- | src/OSSupport/StackTrace.cpp | 9 | ||||
-rw-r--r-- | src/StringUtils.h | 6 |
4 files changed, 20 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 4a6850a2f..3505d7155 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -12,6 +12,7 @@ jasperarmstrong keyboard Lapayo Luksor +linnemannr (Reid Linnemann) M10360 marmot21 Masy98 diff --git a/src/Generating/FinishGen.cpp b/src/Generating/FinishGen.cpp index 5540f80d4..656dc95db 100644 --- a/src/Generating/FinishGen.cpp +++ b/src/Generating/FinishGen.cpp @@ -1375,8 +1375,12 @@ eMonsterType cFinishGenPassiveMobs::GetRandomMob(cChunkDesc & a_ChunkDesc) return mtInvalidType; } - size_t RandMob = static_cast<size_t>((m_Noise.IntNoise2DInt(chunkX - chunkZ + 2, chunkX + 5) / 7)) % ListOfSpawnables.size(); auto MobIter = ListOfSpawnables.begin(); + using diff_type = + std::iterator_traits<decltype(MobIter)>::difference_type; + diff_type RandMob = static_cast<diff_type> + ((unsigned long)(m_Noise.IntNoise2DInt(chunkX - chunkZ + 2, chunkX + 5) / 7) + % ListOfSpawnables.size()); std::advance(MobIter, RandMob); return *MobIter; diff --git a/src/OSSupport/StackTrace.cpp b/src/OSSupport/StackTrace.cpp index 015a53ba0..1ec10f20e 100644 --- a/src/OSSupport/StackTrace.cpp +++ b/src/OSSupport/StackTrace.cpp @@ -12,6 +12,13 @@ #include <unistd.h> #endif +// FreeBSD uses size_t for the return type of backtrace() +#if defined(__FreeBSD__) && (__FreeBSD__ >= 10) + #define btsize size_t +#else + #define btsize int +#endif + @@ -34,7 +41,7 @@ void PrintStackTrace(void) // Use the backtrace() function to get and output the stackTrace: // Code adapted from http://stackoverflow.com/questions/77005/how-to-generate-a-stacktrace-when-my-gcc-c-app-crashes void * stackTrace[30]; - int numItems = backtrace(stackTrace, ARRAYCOUNT(stackTrace)); + btsize numItems = backtrace(stackTrace, ARRAYCOUNT(stackTrace)); backtrace_symbols_fd(stackTrace, numItems, STDERR_FILENO); #endif } diff --git a/src/StringUtils.h b/src/StringUtils.h index 8f67d8031..62767d007 100644 --- a/src/StringUtils.h +++ b/src/StringUtils.h @@ -168,6 +168,12 @@ bool StringToInteger(const AString & a_str, T & a_Num) } else { + // Unsigned result cannot be signed! + if (!std::numeric_limits<T>::is_signed) + { + return false; + } + for (size_t size = a_str.size(); i < size; i++) { if ((a_str[i] < '0') || (a_str[i] > '9')) |