summaryrefslogtreecommitdiff
path: root/TAO/tao/AnyTypeCode/Any_Unknown_IDL_Type.cpp
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2007-04-15 18:39:23 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2007-04-15 18:39:23 +0000
commit2688e04a4ee98e0bb832f60e2c740bab0c4f1481 (patch)
treec64018464dcd3fb2dc6addb5293e07e7622db9cd /TAO/tao/AnyTypeCode/Any_Unknown_IDL_Type.cpp
parentb1d7bed393c902e807fc074c3c57bf9b57ba546f (diff)
downloadATCD-2688e04a4ee98e0bb832f60e2c740bab0c4f1481.tar.gz
Sun Apr 15 18:38:56 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
Diffstat (limited to 'TAO/tao/AnyTypeCode/Any_Unknown_IDL_Type.cpp')
-rw-r--r--TAO/tao/AnyTypeCode/Any_Unknown_IDL_Type.cpp53
1 files changed, 12 insertions, 41 deletions
diff --git a/TAO/tao/AnyTypeCode/Any_Unknown_IDL_Type.cpp b/TAO/tao/AnyTypeCode/Any_Unknown_IDL_Type.cpp
index cdd6336cbe3..6bfbe5b71ad 100644
--- a/TAO/tao/AnyTypeCode/Any_Unknown_IDL_Type.cpp
+++ b/TAO/tao/AnyTypeCode/Any_Unknown_IDL_Type.cpp
@@ -132,53 +132,24 @@ TAO::Unknown_IDL_Type::_tao_decode (TAO_InputCDR &cdr)
// space in the message block.
size_t const size = end - begin;
- if(this->type_->kind() != CORBA::tk_struct)
- {
- ACE_Message_Block new_mb (size + 2 * ACE_CDR::MAX_ALIGNMENT);
-
- ACE_CDR::mb_align (&new_mb);
- ptrdiff_t offset = ptrdiff_t (begin) % ACE_CDR::MAX_ALIGNMENT;
-
- if (offset < 0)
- {
- offset += ACE_CDR::MAX_ALIGNMENT;
- }
-
- new_mb.rd_ptr (offset);
- new_mb.wr_ptr (offset + size);
+ ACE_Message_Block new_mb (size + 2 * ACE_CDR::MAX_ALIGNMENT);
- ACE_OS::memcpy (new_mb.rd_ptr (), begin, size);
+ ACE_CDR::mb_align (&new_mb);
+ ptrdiff_t offset = ptrdiff_t (begin) % ACE_CDR::MAX_ALIGNMENT;
- this->cdr_.reset (&new_mb, cdr.byte_order ());
- this->cdr_.char_translator (cdr.char_translator ());
- this->cdr_.wchar_translator (cdr.wchar_translator ());
- }
- else
+ if (offset < 0)
{
- ACE_Message_Block *mb = (ACE_Message_Block *)cdr.start ();
-
- size_t const size = end - mb->base();
-
- ptrdiff_t offset = begin - mb->base();
-
- ACE_Message_Block new_mb (size + 2 * ACE_CDR::MAX_ALIGNMENT);
-
- new_mb.wr_ptr(size + 2 * ACE_CDR::MAX_ALIGNMENT);
-
- this->cdr_.reset (&new_mb, cdr.byte_order ());
- this->cdr_.char_translator (cdr.char_translator ());
- this->cdr_.wchar_translator (cdr.wchar_translator ());
-
- ACE_Message_Block *mb_ = (ACE_Message_Block *)cdr_.start();
+ offset += ACE_CDR::MAX_ALIGNMENT;
+ }
- ptrdiff_t align_ofs = (ptrdiff_t(mb->base() - mb_->base())
- %ACE_CDR::MAX_ALIGNMENT + ACE_CDR::MAX_ALIGNMENT) % ACE_CDR::MAX_ALIGNMENT;
+ new_mb.rd_ptr (offset);
+ new_mb.wr_ptr (offset + size);
- ACE_OS::memcpy (mb_->base() + align_ofs, mb->base(), size);
+ ACE_OS::memcpy (new_mb.rd_ptr (), begin, size);
- mb_->rd_ptr(mb_->base() + offset + align_ofs);
- mb_->wr_ptr(mb_->base() + size + align_ofs);
- }
+ this->cdr_.reset (&new_mb, cdr.byte_order ());
+ this->cdr_.char_translator (cdr.char_translator ());
+ this->cdr_.wchar_translator (cdr.wchar_translator ());
// Take over the GIOP version, the input cdr can have a different
// version then our current GIOP version.