diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-05-12 21:56:17 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-05-12 21:56:17 +0000 |
commit | 3d5bb450b4803bb2a9a2c655cce36dc203d71f9c (patch) | |
tree | 41e33731bed5b68e02785fb4e23b59a9846b4551 /TAO/tao/IIOP_ORB.cpp | |
parent | a0897d71a18abc3020b324fffdb85d34d302e559 (diff) | |
download | ATCD-3d5bb450b4803bb2a9a2c655cce36dc203d71f9c.tar.gz |
ChangeLogTag:Tue May 12 16:53:18 1998 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'TAO/tao/IIOP_ORB.cpp')
-rw-r--r-- | TAO/tao/IIOP_ORB.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/TAO/tao/IIOP_ORB.cpp b/TAO/tao/IIOP_ORB.cpp index cb8198c270d..acadf8d8e17 100644 --- a/TAO/tao/IIOP_ORB.cpp +++ b/TAO/tao/IIOP_ORB.cpp @@ -150,13 +150,12 @@ ior_string_to_object (CORBA::String str, // Unhex the bytes, and make a CDR deencapsulation stream from the // resulting data. - size_t bufsize = - 1 + ACE_OS::strlen ((char *) str) / 2 + CDR::MAX_ALIGNMENT; - char *non_aligned_buffer; - ACE_NEW_RETURN (non_aligned_buffer, - char [bufsize], - CORBA_Object::_nil ()); - char *buffer = ptr_align_binary (non_aligned_buffer, CDR::MAX_ALIGNMENT); + ACE_Message_Block mb (ACE_OS::strlen ((char *) str) / 2 + 1 + + CDR::MAX_ALIGNMENT); + + CDR::mb_align (&mb); + + char *buffer = mb.rd_ptr (); char *tmp = (char *) str; size_t len = 0; @@ -177,7 +176,6 @@ ior_string_to_object (CORBA::String str, if (tmp [0] && !isspace (tmp [0])) { - delete [] non_aligned_buffer; env.exception (new CORBA::BAD_PARAM (CORBA::COMPLETED_NO)); return 0; } @@ -185,7 +183,10 @@ ior_string_to_object (CORBA::String str, // Create deencapsulation stream ... then unmarshal objref from that // stream. - TAO_InputCDR stream (buffer + 1, len - 1, buffer[0]); + int byte_order = *(mb.rd_ptr ()); + mb.rd_ptr (1); + mb.wr_ptr (len); + TAO_InputCDR stream (&mb, byte_order); CORBA::Object_ptr objref; if (stream.decode (CORBA::_tc_Object, @@ -193,7 +194,6 @@ ior_string_to_object (CORBA::String str, env) != CORBA::TypeCode::TRAVERSE_CONTINUE) objref = 0; - delete [] non_aligned_buffer; return objref; } |