type set is handled incorrectly when writing object ---------------------------------------------------
Key: THRIFT-1279 URL: https://issues.apache.org/jira/browse/THRIFT-1279 Project: Thrift Issue Type: Bug Components: PHP - Compiler, PHP - Library Affects Versions: 0.7 Reporter: Darius Staisiunas Fix For: 0.7 Patch provided in https://issues.apache.org/jira/browse/THRIFT-342 doesn't handle object writing correctly: if one of the parameters is set struct MyStruct { 10: string id, 20: string name, 30: set<string> setOfIDs } in generated file de-serialization of object is public function read($input) ... $xfer += $input->readString($elem5); if (is_scalar($elem5)) { $this->setOfIDs[$elem5] = true; } else { $this->setOfIDs []= $elem5; } ... but when serializing, we are looping only through values of array: public function write($input) ... foreach ($this->setOfIDs as $iter6) { if (is_scalar($iter6)) { $this->setOfIDs[$iter6] = true; } $xfer += $output->writeString($iter6); } } ... But if our element is scalar - we should be iterating through keys. it should look like: foreach ($this->terminalIds as $iter6 => $iter7) { if (is_scalar($iter7)) { $xfer += $output->writeString($iter6); } else { $xfer += $output->writeString($iter7); } } -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira