[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