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


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