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