summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-07-10 21:12:20 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-07-10 21:12:20 +0000
commit387b6c2285c427a1abcb4c0be8ef060e5b9ba005 (patch)
treef13cd1efd427d27fd7f93e417bc3b13c2aa8e69c
parentabb669563f60dcbb3f0b450d41460791ed4bf371 (diff)
downloadATCD-387b6c2285c427a1abcb4c0be8ef060e5b9ba005.tar.gz
ChangeLogTag: Thu Jul 10 16:05:26 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog_ref13
-rw-r--r--TAO/tao/Fixed_Size_Argument_T.cpp11
-rw-r--r--TAO/tao/Fixed_Size_Argument_T.h2
-rw-r--r--TAO/tao/Var_Array_Argument_T.cpp22
-rw-r--r--TAO/tao/Var_Array_Argument_T.h2
-rw-r--r--TAO/tao/Var_Size_Argument_T.cpp12
6 files changed, 41 insertions, 21 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref
index 394744db133..a8762bc3c4e 100644
--- a/TAO/ChangeLog_ref
+++ b/TAO/ChangeLog_ref
@@ -1,3 +1,16 @@
+Thu Jul 10 16:05:26 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tao/Fixed_Size_Argument_T.cpp:
+ * tao/Fixed_Size_Argument_T.h:
+ * tao/Var_Array_Argument_T.cpp:
+ * tao/Var_Array_Argument_T.h:
+ * tao/Var_Size_Argument_T.cpp:
+
+ Fixed bugs uncovered by running Param_Test. Also moved memory
+ allocation for OUT arguments and return values of variable size
+ from the constructor to the demarshal() method. This delay will
+ allow the allocation to be skipped for collocated calls.
+
Thu Jul 10 09:36:44 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* tao/Any.cpp:
diff --git a/TAO/tao/Fixed_Size_Argument_T.cpp b/TAO/tao/Fixed_Size_Argument_T.cpp
index aee7ca4bdf4..247aa704418 100644
--- a/TAO/tao/Fixed_Size_Argument_T.cpp
+++ b/TAO/tao/Fixed_Size_Argument_T.cpp
@@ -97,35 +97,36 @@ template<typename S>
CORBA::Boolean
TAO::Ret_Fixed_Size_Argument_T<S>::demarshal (TAO_InputCDR & cdr)
{
- return cdr >> *this->x_;
+ return cdr >> this->x_;
}
template<typename S>
void
TAO::Ret_Fixed_Size_Argument_T<S>::interceptor_result (CORBA::Any * any)
{
- (*any) <<= *this->x_;
+ (*any) <<= this->x_;
}
template<typename S>
CORBA::Boolean
TAO::Ret_Fixed_Size_Argument_T<S>::interceptor_replace (CORBA::Any & any)
{
- return any >>= this->x_;
+ S * tmp = &this->x_;
+ return any >>= tmp;
}
template<typename S>
S
TAO::Ret_Fixed_Size_Argument_T<S>::excp (void)
{
- return *this->x_;
+ return this->x_;
}
template<typename S>
S
TAO::Ret_Fixed_Size_Argument_T<S>::retn (void)
{
- return *this->x_;
+ return this->x_;
}
// ============================================================
diff --git a/TAO/tao/Fixed_Size_Argument_T.h b/TAO/tao/Fixed_Size_Argument_T.h
index 64b5380a0d5..9b39dd5a7a6 100644
--- a/TAO/tao/Fixed_Size_Argument_T.h
+++ b/TAO/tao/Fixed_Size_Argument_T.h
@@ -105,7 +105,7 @@ namespace TAO
S retn (void);
protected:
- S * x_;
+ S x_;
};
/**
diff --git a/TAO/tao/Var_Array_Argument_T.cpp b/TAO/tao/Var_Array_Argument_T.cpp
index 9cc187dd76d..b2fec76a155 100644
--- a/TAO/tao/Var_Array_Argument_T.cpp
+++ b/TAO/tao/Var_Array_Argument_T.cpp
@@ -94,11 +94,8 @@ template<typename S,
typename S_forany>
TAO::Out_Var_Array_Argument_T<S,S_slice,S_var,S_out,S_forany>::
Out_Var_Array_Argument_T (S_out x)
+ : x_ (x.ptr ())
{
- typedef TAO::Array_Traits<S,S_slice> ARRAY_TRAITS;
- ACE_ALLOCATOR (x.ptr (),
- ARRAY_TRAITS::tao_alloc ());
- this->x_ = x.ptr ();
}
template<typename S,
@@ -111,7 +108,11 @@ TAO::Out_Var_Array_Argument_T<S,S_slice,S_var,S_out,S_forany>::demarshal (
TAO_InputCDR & cdr
)
{
- S_forany tmp (this->x_.ptr ());
+ typedef TAO::Array_Traits<S,S_slice> ARRAY_TRAITS;
+ ACE_ALLOCATOR_RETURN (this->x_,
+ ARRAY_TRAITS::tao_alloc (),
+ 0);
+ S_forany tmp (this->x_);
return cdr >> tmp;
}
@@ -121,11 +122,6 @@ template<typename S, typename S_slice, typename S_var, typename S_forany>
TAO::Ret_Var_Array_Argument_T<S,S_slice,S_var,S_forany>::
Ret_Var_Array_Argument_T (void)
{
- typedef TAO::Array_Traits<S,S_slice> ARRAY_TRAITS;
- S_slice * tmp = 0;
- ACE_ALLOCATOR (tmp,
- ARRAY_TRAITS::tao_alloc ());
- this->x_ = tmp;
}
template<typename S, typename S_slice, typename S_var, typename S_forany>
@@ -134,6 +130,12 @@ TAO::Ret_Var_Array_Argument_T<S,S_slice,S_var,S_forany>::demarshal (
TAO_InputCDR & cdr
)
{
+ typedef TAO::Array_Traits<S,S_slice> ARRAY_TRAITS;
+ S_slice * tmp_ptr = 0;
+ ACE_ALLOCATOR_RETURN (tmp_ptr,
+ ARRAY_TRAITS::tao_alloc (),
+ 0);
+ this->x_ = tmp_ptr;
S_forany tmp (this->x_.ptr ());
return cdr >> tmp;
}
diff --git a/TAO/tao/Var_Array_Argument_T.h b/TAO/tao/Var_Array_Argument_T.h
index 669191ea0cf..8fabb9d8e0d 100644
--- a/TAO/tao/Var_Array_Argument_T.h
+++ b/TAO/tao/Var_Array_Argument_T.h
@@ -85,7 +85,7 @@ namespace TAO
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
private:
- S_var x_;
+ S_slice *& x_;
};
/**
diff --git a/TAO/tao/Var_Size_Argument_T.cpp b/TAO/tao/Var_Size_Argument_T.cpp
index be6a022194c..1f062016779 100644
--- a/TAO/tao/Var_Size_Argument_T.cpp
+++ b/TAO/tao/Var_Size_Argument_T.cpp
@@ -78,14 +78,15 @@ template<typename S, typename S_out>
TAO::Out_Var_Size_Argument_T<S,S_out>::Out_Var_Size_Argument_T (S_out x)
: x_ (x.ptr ())
{
- ACE_NEW (this->x_,
- S);
}
template<typename S, typename S_out>
CORBA::Boolean
TAO::Out_Var_Size_Argument_T<S,S_out>::demarshal (TAO_InputCDR & cdr)
{
+ ACE_NEW_RETURN (this->x_,
+ S,
+ 0);
return cdr >> *this->x_;
}
@@ -94,14 +95,17 @@ TAO::Out_Var_Size_Argument_T<S,S_out>::demarshal (TAO_InputCDR & cdr)
template<typename S, typename S_var>
TAO::Ret_Var_Size_Argument_T<S,S_var>::Ret_Var_Size_Argument_T (void)
{
- ACE_NEW (this->x_.out (),
- S);
}
template<typename S, typename S_var>
CORBA::Boolean
TAO::Ret_Var_Size_Argument_T<S,S_var>::demarshal (TAO_InputCDR & cdr)
{
+ S * tmp = 0;
+ ACE_NEW_RETURN (tmp,
+ S,
+ 0);
+ this->x_ = tmp;
return cdr >> this->x_.inout ();
}