summaryrefslogtreecommitdiff
path: root/TAO/tao/IIOP_ORB.cpp
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-05-12 21:56:17 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-05-12 21:56:17 +0000
commit3d5bb450b4803bb2a9a2c655cce36dc203d71f9c (patch)
tree41e33731bed5b68e02785fb4e23b59a9846b4551 /TAO/tao/IIOP_ORB.cpp
parenta0897d71a18abc3020b324fffdb85d34d302e559 (diff)
downloadATCD-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.cpp20
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;
}