Changeset - r24990:3bed6fdba653
[Not reviewed]
master
0 1 0
Patric Stout - 4 years ago 2021-03-03 12:12:29
truebrain@openttd.org
Fix #8799: NGameAllowedSorter() is not imposing strict weak ordering relation (#8801)

In other words, it should only (!) return true if A comes for B.
This promise was broken for the situation where two values are
identical. It would return true in these cases too. This is of
course not possible: if two values are identical, neither come
before the other. As such, the sorter was not imposing strict
weak ordering relations.

libstdc++ handled this scenario just fine, but libc++ crashes
badly on this, as it allowed comparing of [begin, end] instead
of [begin, end).
libc++ considered this not a bug (and by specs, they are correct;
just this way of crashing is of course a bit harsh):
https://bugs.llvm.org/show_bug.cgi?id=47903
1 file changed with 1 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/network/network_gui.cpp
Show inline comments
 
@@ -333,7 +333,7 @@ protected:
 
		if (r == 0) r = a->info.use_password - b->info.use_password;
 

	
 
		/* Finally sort on the number of clients of the server in reverse order. */
 
		return (r != 0) ? r < 0 : !NGameClientSorter(a, b);
 
		return (r != 0) ? r < 0 : NGameClientSorter(b, a);
 
	}
 

	
 
	/** Sort the server list */
0 comments (0 inline, 0 general)