summaryrefslogtreecommitdiff
path: root/src/mapblock.cpp
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-05-03 17:33:51 +0300
committerPerttu Ahola <celeron55@gmail.com>2011-05-03 17:33:51 +0300
commit59c4a342a9625fe37e9a7aa755e6deca14c3a110 (patch)
treeb5a463224681e6c4bd9ccd010a8b9d437e1567ee /src/mapblock.cpp
parent821d5bb4cc3a9047187955ab897ea28f9b9aa957 (diff)
downloadminetest-59c4a342a9625fe37e9a7aa755e6deca14c3a110.tar.gz
minetest-59c4a342a9625fe37e9a7aa755e6deca14c3a110.tar.bz2
minetest-59c4a342a9625fe37e9a7aa755e6deca14c3a110.zip
Fixed a temporary solution of server shutting down to an assert(0) when a too large block metadata is sent to an old client
Diffstat (limited to 'src/mapblock.cpp')
-rw-r--r--src/mapblock.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/mapblock.cpp b/src/mapblock.cpp
index f84c65176..67e7e2574 100644
--- a/src/mapblock.cpp
+++ b/src/mapblock.cpp
@@ -2109,9 +2109,17 @@ void MapBlock::serialize(std::ostream &os, u8 version)
{
if(version <= 15)
{
- std::ostringstream oss(std::ios_base::binary);
- m_node_metadata.serialize(oss);
- os<<serializeString(oss.str());
+ try{
+ std::ostringstream oss(std::ios_base::binary);
+ m_node_metadata.serialize(oss);
+ os<<serializeString(oss.str());
+ }
+ // This will happen if the string is longer than 65535
+ catch(SerializationError &e)
+ {
+ // Use an empty string
+ os<<serializeString("");
+ }
}
else
{