Browse Source

Make _members dynamically allocated due to static array limit on ARM.

Adam Ierymenko 9 years ago
parent
commit
5e6eae620b
2 changed files with 4 additions and 2 deletions
  1. 3 1
      node/Cluster.cpp
  2. 1 1
      node/Cluster.hpp

+ 3 - 1
node/Cluster.cpp

@@ -56,7 +56,8 @@ Cluster::Cluster(const RuntimeEnvironment *renv,uint16_t id,DistanceAlgorithm da
 	_y(y),
 	_y(y),
 	_z(z),
 	_z(z),
 	_da(da),
 	_da(da),
-	_id(id)
+	_id(id),
+	_members(new _Member[65536])
 {
 {
 	uint16_t stmp[ZT_SHA512_DIGEST_LEN / sizeof(uint16_t)];
 	uint16_t stmp[ZT_SHA512_DIGEST_LEN / sizeof(uint16_t)];
 
 
@@ -76,6 +77,7 @@ Cluster::~Cluster()
 {
 {
 	Utils::burn(_masterSecret,sizeof(_masterSecret));
 	Utils::burn(_masterSecret,sizeof(_masterSecret));
 	Utils::burn(_key,sizeof(_key));
 	Utils::burn(_key,sizeof(_key));
+	delete [] _members;
 }
 }
 
 
 void Cluster::handleIncomingStateMessage(const void *msg,unsigned int len)
 void Cluster::handleIncomingStateMessage(const void *msg,unsigned int len)

+ 1 - 1
node/Cluster.hpp

@@ -303,7 +303,7 @@ private:
 		~_Member() { Utils::burn(key,sizeof(key)); }
 		~_Member() { Utils::burn(key,sizeof(key)); }
 	};
 	};
 
 
-	_Member _members[65536]; // cluster IDs can be from 0 to 65535 (16-bit)
+	_Member *const _members; // cluster IDs can be from 0 to 65535 (16-bit)
 
 
 	std::vector<uint16_t> _memberIds;
 	std::vector<uint16_t> _memberIds;
 	Mutex _memberIds_m;
 	Mutex _memberIds_m;