diff options
author | worktycho <work.tycho@gmail.com> | 2014-03-14 15:34:29 +0100 |
---|---|---|
committer | worktycho <work.tycho@gmail.com> | 2014-03-14 15:34:29 +0100 |
commit | b8cffe569f8bf6e3379f1c45d9e32a986efac25e (patch) | |
tree | 4688783dbca9b7a6f0ef662926d07e4c5edc25d6 /src/WorldStorage/FastNBT.cpp | |
parent | cPlugin:BindConsoleCommand can be called statically. (diff) | |
parent | Merge branch 'master' into warnings (diff) | |
download | cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.gz cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.bz2 cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.lz cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.xz cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.tar.zst cuberite-b8cffe569f8bf6e3379f1c45d9e32a986efac25e.zip |
Diffstat (limited to '')
-rw-r--r-- | src/WorldStorage/FastNBT.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/WorldStorage/FastNBT.cpp b/src/WorldStorage/FastNBT.cpp index 8f80c3f75..be25fd1a4 100644 --- a/src/WorldStorage/FastNBT.cpp +++ b/src/WorldStorage/FastNBT.cpp @@ -506,22 +506,18 @@ void cFastNBTWriter::AddIntArray(const AString & a_Name, const int * a_Value, si { TagCommon(a_Name, TAG_IntArray); Int32 len = htonl(a_NumElements); + size_t cap = m_Result.capacity(); + size_t size = m_Result.length(); + if ((cap - size) < (4 + a_NumElements * 4)) + { + m_Result.reserve(size + 4 + (a_NumElements * 4)); + } m_Result.append((const char *)&len, 4); -#if defined(ANDROID_NDK) - // Android has alignment issues - cannot byteswap (htonl) an int that is not 32-bit-aligned, which happens in the regular version for (size_t i = 0; i < a_NumElements; i++) { int Element = htonl(a_Value[i]); m_Result.append((const char *)&Element, 4); } -#else - int * Elements = (int *)(m_Result.data() + m_Result.size()); - m_Result.append(a_NumElements * 4, (char)0); - for (size_t i = 0; i < a_NumElements; i++) - { - Elements[i] = htonl(a_Value[i]); - } -#endif } |