summaryrefslogtreecommitdiffstats
path: root/src/WorldStorage/FastNBT.cpp
diff options
context:
space:
mode:
authorworktycho <work.tycho@gmail.com>2014-03-14 15:34:29 +0100
committerworktycho <work.tycho@gmail.com>2014-03-14 15:34:29 +0100
commitb8cffe569f8bf6e3379f1c45d9e32a986efac25e (patch)
tree4688783dbca9b7a6f0ef662926d07e4c5edc25d6 /src/WorldStorage/FastNBT.cpp
parentcPlugin:BindConsoleCommand can be called statically. (diff)
parentMerge branch 'master' into warnings (diff)
downloadcuberite-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.cpp16
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
}