This is an automated email from the ASF dual-hosted git repository.
jensg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/thrift.git
The following commit(s) were added to refs/heads/master by this push:
new b1d4b3a THRIFT-4989: Fix run time exception when using Swift
TCompactProtocol Client: Swift Patch: David Furey
b1d4b3a is described below
commit b1d4b3afcccb64a68b846a55c4f8bb1a11aa56cb
Author: David Furey <[email protected]>
AuthorDate: Fri Nov 1 09:52:37 2019 +0000
THRIFT-4989: Fix run time exception when using Swift TCompactProtocol
Client: Swift
Patch: David Furey
This closes #1908
Sort TStruct members by key before generating class properties so that
Swift Thrift lib can use delta encoding for CompactProtocol.
---
compiler/cpp/src/thrift/generate/t_swift_generator.cc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/compiler/cpp/src/thrift/generate/t_swift_generator.cc
b/compiler/cpp/src/thrift/generate/t_swift_generator.cc
index eb746c1..4a2f87d 100644
--- a/compiler/cpp/src/thrift/generate/t_swift_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_swift_generator.cc
@@ -697,7 +697,9 @@ void t_swift_generator::generate_swift_struct(ostream& out,
}
block_open(out);
- for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
+ vector<t_field*> sorted = members;
+ sort(sorted.begin(), sorted.end(), [](t_field *a, t_field *b) { return
(a->get_key() < b->get_key()); } );
+ for (m_iter = sorted.begin(); m_iter != sorted.end(); ++m_iter) {
out << endl;
// TODO: Defaults