[ 
https://issues.apache.org/jira/browse/THRIFT-3935?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jens Geyer resolved THRIFT-3935.
--------------------------------
       Resolution: Fixed
    Fix Version/s: 0.10.0

Committed, thank you.

> Incorrect skipping of map and set
> ---------------------------------
>
>                 Key: THRIFT-3935
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3935
>             Project: Thrift
>          Issue Type: Bug
>          Components: C glib - Library
>    Affects Versions: 1.0
>         Environment: Ubuntu
>            Reporter: Matej Kupljen
>            Assignee: Matej Kupljen
>             Fix For: 0.10.0
>
>         Attachments: add-set-and-fix-map-skip.patch
>
>
> If a new map<> is added to the thrift structure and sending this new 
> serialized thrift to the old version that didn't included yet this map 
> definition it should skip it. It does so, but it uses read_set_begin/end 
> instead of read_map_begin/end functions.
> Included patch fixes the problem.
> Thanks,
> Matej
> {code}
> diff --git a/lib/c_glib/src/thrift/c_glib/protocol/thrift_protocol.c 
> b/lib/c_glib/src/thrift/c_glib/protocol/thrift_protocol.c
> index d6315d8..b274b00 100644
> --- a/lib/c_glib/src/thrift/c_glib/protocol/thrift_protocol.c
> +++ b/lib/c_glib/src/thrift/c_glib/protocol/thrift_protocol.c
> @@ -489,14 +489,16 @@ thrift_protocol_skip (ThriftProtocol *protocol, 
> ThriftType type, GError **error)
>        {
>          guint32 result = 0;
>          ThriftType elem_type;
> +        ThriftType key_type;
>          guint32 i, size;
> -        result += thrift_protocol_read_set_begin (protocol, &elem_type, 
> &size,
> +        result += thrift_protocol_read_map_begin (protocol, &key_type, 
> &elem_type, &size,
>                                                    error);
>          for (i = 0; i < size; i++)
>          {
> +          result += thrift_protocol_skip (protocol, key_type, error);
>            result += thrift_protocol_skip (protocol, elem_type, error);
>          }
> -        result += thrift_protocol_read_set_end (protocol, error);
> +        result += thrift_protocol_read_map_end (protocol, error);
>          return result;
>        }
>      case T_LIST:
> {code}



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

Reply via email to