You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Can Celasun (JIRA)" <ji...@apache.org> on 2018/10/12 22:04:00 UTC
[jira] [Commented] (THRIFT-4650) Required field incorrectly marked
as set when fieldType does not match
[ https://issues.apache.org/jira/browse/THRIFT-4650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16648518#comment-16648518 ]
Can Celasun commented on THRIFT-4650:
-------------------------------------
Thanks for reporting, I'll try to take a look when I can, but pull requests are welcome in the meantime.
> Required field incorrectly marked as set when fieldType does not match
> ----------------------------------------------------------------------
>
> Key: THRIFT-4650
> URL: https://issues.apache.org/jira/browse/THRIFT-4650
> Project: Thrift
> Issue Type: Bug
> Components: Go - Compiler
> Affects Versions: 0.11.0
> Reporter: Craig W
> Priority: Major
>
> The "Read" function that gets generated incorrectly marks required fields as being set when the type of the field does not match what's expected.
> {{For example, the following IDL:}}
> {{struct Foo {}}
> {{ 1: required string id}}
> {{}}}
> {{The generated Read function has the following:}}
> {{switch fieldId {}}
> {{ case 1:}}
> {{ if fieldTypeId == thrift.STRING {}}
> {{ if err := p.ReadField1(iprot); err != nil {}}
> {{ return err}}
> }
> {{ } else {}}
> {{ if err := iprot.Skip(fieldTypeId); err != nil {}}
> {{ return err}}
> }
> }
> {{ issetID = true}}
> {{}}}
> {{I ran into a case where I attempted to deserialize another message type into type Foo, and I expected it to return an error, but it did not.}}
> f : = Foo{}
> err := thrift.NewTDeserializer().Read(&f, bytes)
> {{I think [this code|https://github.com/apache/thrift/blob/master/compiler/cpp/src/thrift/generate/t_go_generator.cc#L1600] in the generator needs to be moved inside the first "if" block, so that its only set to true if it actually reads the data of the correct type.}}
> {{ }}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)