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

Nick Lanham updated THRIFT-370:
-------------------------------

    Attachment: issetTest.tar.gz

sample server/client for this problem.  to use do:

$ tar -xzvf issetTest.tar.gz
$ cd isset_case
$ thrift --gen cpp isset.thrift
$ make
$ ./issetServer

and then run 
$ ./issetClient
from another window and observe the output.

nothing should be set, but everything is.


> unset fields in structs in c++ have __isset set to true
> -------------------------------------------------------
>
>                 Key: THRIFT-370
>                 URL: https://issues.apache.org/jira/browse/THRIFT-370
>             Project: Thrift
>          Issue Type: Bug
>          Components: Library (C++)
>    Affects Versions: 0.1
>         Environment: Linux 2.6.27-11 x86_64
>            Reporter: Nick Lanham
>             Fix For: 0.1
>
>         Attachments: issetTest.tar.gz
>
>
> If you have a struct like:
> struct test_struct {
>   1:string test_string
> }
> and then in a c++ client you do:
>   test_struct foo;
>   client.someFunc(foo)
> then the server will see it's argument (arg) as having 
> arg.__isset.test_string set to true.
> similarly from the client side if expect a return value and do:
>   test_struct returnVal;
>   client.someFunc(returnVal);
> and the server does not set the returnVal to anything it will still see 
> returnVal.__isset.test_string as true
> in all cases the string *is* set to the empty string as the constuctor for 
> test_struct sets it, but __isset should not be true.
> Attached (should be) a simple test case.  Just untar run "thrift --gen cpp 
> isset.thrift" and then run make.  start up the server and run the client to 
> see the output.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to