[
https://issues.apache.org/jira/browse/THRIFT-3001?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jens Geyer resolved THRIFT-3001.
--------------------------------
Resolution: Fixed
Fix Version/s: 0.9.3
Committed, many thanks!
> 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
> Assignee: Jens Geyer
> Priority: Minor
> Labels: patch
> Fix For: 0.9.3
>
> Attachments: THRIFT-3001-C-Equals-fails-for-binary-fields-byte.patch,
> fix_Equals_for_binary_fields_in_csharp.diff
>
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> 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)