[ https://issues.apache.org/jira/browse/THRIFT-2180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14350338#comment-14350338 ]
Luca Sacchi commented on THRIFT-2180: ------------------------------------- This patch broke TBinaryProtocol at cocoa side Inspecting generated messages, i found that version and size field in versioned_size union are created in wrong order. I tested against a Java server with TBinaryProtocol encapsulated in HTTP. attached a simple pathc that resolve the issue diff --git a/lib/cocoa/src/protocol/TBinaryProtocol.m b/lib/cocoa/src/protocol/TBinaryProtocol.m index e79bd57..d64db26 100644 --- a/lib/cocoa/src/protocol/TBinaryProtocol.m +++ b/lib/cocoa/src/protocol/TBinaryProtocol.m @@ -26,8 +26,8 @@ static const uint16_t VERSION_1 = 0x8001; union versioned_size { int32_t i32; struct { - uint16_t version; - int16_t size; + int16_t size; + uint16_t version; } packed; }; @@ -394,7 +394,7 @@ static TBinaryProtocolFactory * gSharedFactory = nil; sequenceID: (int) sequenceID { if (mStrictWrite) { - int version = VERSION_1 | messageType; + int version = (VERSION_1 << 16) | messageType; [self writeI32: version]; [self writeString: name]; [self writeI32: sequenceID]; > Integer types issues in Cocoa lib on ARM64 > ------------------------------------------ > > Key: THRIFT-2180 > URL: https://issues.apache.org/jira/browse/THRIFT-2180 > Project: Thrift > Issue Type: Bug > Components: Cocoa - Library > Affects Versions: 0.9.1 > Environment: ARM64, iOS, xcode5 > Reporter: Sébastien martini > > When compiling the Cocoa library (using the current master) for iOS on ARM64, > xcode5 highlights several integer types warnings. > Several of these instances are originated from the issue that the [NSData > length] method returns an NSUInteger which is an unsigned long on ARM64 and > is often assigned to an int (int32) in the Cocoa lib. -- This message was sent by Atlassian JIRA (v6.3.4#6332)