Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
0.9.2
-
Windows, OSX (most probably all others as well)
-
Patch Available
Description
The genrated code for Equals is using System.Object.Equals() for byte[].
byte[] a =
{1};byte[] b = {1}
;
bool equals1 = System.Object.Equals(a, b);
bool equals2 = Thrift.Collections.TCollections.Equals(a, b);
equals1 ist False and equals2 is True.
The effects is, that two thrift-objects that have binary fields never compare Equal.
test/reproduction:
- create a thrift-model with a binary field.
- compile this thrift-model with the c# compiler with the hashcode option enabled.
- create two instances of this model (o1, o2) and fill the binary filed with equal data
- note the result of o1.Equals(o2)
fix: in t_csharp_generator.cc: change the check in the "Equals"-generator to also use TCollections.Equals for the binary type