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
 

Reply via email to