[Orxonox-commit 5851] r10511 - code/branches/core7/src/libraries/network
landauf at orxonox.net
landauf at orxonox.net
Sat May 30 21:59:31 CEST 2015
Author: landauf
Date: 2015-05-30 21:59:31 +0200 (Sat, 30 May 2015)
New Revision: 10511
Modified:
code/branches/core7/src/libraries/network/NetworkFunction.h
Log:
bugfix: comparison function was not symmetric.
e.g. two NetworkFunctionPointers:
NFP1 has pointer[0] = 1 and pointer[1] = 5;
NFP2 has pointer[0] = 5 and pointer[1] = 1
then so far NFP1 < NFP2 returned true and NFP2 < NFP1 also returned true
now the behavior is fixed
Modified: code/branches/core7/src/libraries/network/NetworkFunction.h
===================================================================
--- code/branches/core7/src/libraries/network/NetworkFunction.h 2015-05-30 11:13:23 UTC (rev 10510)
+++ code/branches/core7/src/libraries/network/NetworkFunction.h 2015-05-30 19:59:31 UTC (rev 10511)
@@ -55,10 +55,24 @@
bool operator<(const NetworkFunctionPointer& b) const
{
#if defined(ORXONOX_COMPILER_GCC) && defined(ORXONOX_ARCH_32)
- return pointer[0]<b.pointer[0] ? true : pointer[1]<b.pointer[1];
-#else //ORXONOX_COMPILER_GCC
- return pointer[0]<b.pointer[0] ? true : ( pointer[1]<b.pointer[1] ? true : ( pointer[2]<b.pointer[2] ? true : pointer[3]<b.pointer[3] ) );
-#endif //ORXONOX_COMPILER_GCC
+ if (pointer[0] != b.pointer[0])
+ return pointer[0] < b.pointer[0];
+ else if (pointer[1] != b.pointer[1])
+ return pointer[1] < b.pointer[1];
+ else
+ return false;
+#else
+ if (pointer[0] != b.pointer[0])
+ return pointer[0] < b.pointer[0];
+ else if (pointer[1] != b.pointer[1])
+ return pointer[1] < b.pointer[1];
+ else if (pointer[2] != b.pointer[2])
+ return pointer[2] < b.pointer[2];
+ else if (pointer[3] != b.pointer[3])
+ return pointer[3] < b.pointer[3];
+ else
+ return false;
+#endif
}
};
More information about the Orxonox-commit
mailing list