You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Benjamin Schulz (JIRA)" <ji...@apache.org> on 2015/02/17 13:12:11 UTC

[jira] [Created] (THRIFT-3001) C# Equals fails for binary fields (byte[])

Benjamin Schulz created THRIFT-3001:
---------------------------------------

             Summary: C# Equals fails for binary fields (byte[])
                 Key: THRIFT-3001
                 URL: https://issues.apache.org/jira/browse/THRIFT-3001
             Project: Thrift
          Issue Type: Bug
          Components: C# - Compiler
    Affects Versions: 0.9.2
         Environment: Windows, OSX (most probably all others as well)
            Reporter: Benjamin Schulz
            Priority: Minor


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




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)