THRIFT-1404: Delphi compiler generates struct reader code with problem.
authorJake Farrell <jfarrell@apache.org>
Wed, 26 Oct 2011 02:25:07 +0000 (02:25 +0000)
committerJake Farrell <jfarrell@apache.org>
Wed, 26 Oct 2011 02:25:07 +0000 (02:25 +0000)
Client: delphi
Patch: Kenjiro Fukumitsu

After recieved STOP,it calls additional ReadFieldEnd, which is different from the implementation of other language compiler.

git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1189005 13f79535-47bb-0310-9956-ffa450edef68

compiler/cpp/src/generate/t_delphi_generator.cc
lib/delphi/src/Thrift.Transport.pas

index 4798b61..a7aa64a 100644 (file)
@@ -2372,13 +2372,10 @@ void t_delphi_generator::generate_delphi_struct_reader_impl(ostream& out, string
 
   indent_impl(code_block) << "field_ := iprot.ReadFieldBegin();" << endl;
 
-  indent_impl(code_block) << "try" << endl;
-  indent_up_impl();
-
   indent_impl(code_block) << "if (field_.Type_ = TType.Stop) then" << endl;
   indent_impl(code_block) << "begin" << endl;
   indent_up_impl();
-  indent_impl(code_block) << "break;" << endl;
+  indent_impl(code_block) << "Break;" << endl;
   indent_down_impl();
   indent_impl(code_block) << "end;" << endl;
 
@@ -2432,14 +2429,7 @@ void t_delphi_generator::generate_delphi_struct_reader_impl(ostream& out, string
     indent_impl(code_block) << "end;" << endl;
   }
 
-
-  indent_down_impl();
-
-  indent_impl(code_block) << "finally" << endl;
-  indent_up_impl();
   indent_impl(code_block) << "iprot.ReadFieldEnd;" << endl;
-  indent_down_impl();
-  indent_impl(code_block) << "end;" << endl;
 
   indent_down_impl();
 
index 0e6f825..a460819 100644 (file)
@@ -959,7 +959,7 @@ procedure TStreamTransportImpl.Write(const buf: TBytes; off, len: Integer);
 begin\r
   if FOutputStream = nil then\r
   begin\r
-    raise TTransportException.Create( TTransportException.TExceptionType.NotOpen, 'Cannot read from null outputstream' );\r
+    raise TTransportException.Create( TTransportException.TExceptionType.NotOpen, 'Cannot write to null outputstream' );\r
   end;\r
 \r
   FOutputStream.Write( buf, off, len );\r