summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_operation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_operation.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_operation.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/TAO/TAO_IDL/be/be_operation.cpp b/TAO/TAO_IDL/be/be_operation.cpp
index c7339340121..09b84b5612f 100644
--- a/TAO/TAO_IDL/be/be_operation.cpp
+++ b/TAO/TAO_IDL/be/be_operation.cpp
@@ -212,7 +212,15 @@ be_operation::gen_client_stubs (void)
// Are we returning a pointer to value? i.e., is the type
// variable? If it is, we must tell the stub what is the size of
// the top level structure
- if (bt->size_type () == be_decl::VARIABLE)
+ be_type *prim;
+ if (bt->node_type () == AST_Decl::NT_typedef)
+ {
+ be_typedef *tdef = be_typedef::narrow_from_decl (bt);
+ prim = tdef->primitive_base_type ();
+ }
+ else
+ prim = bt;
+ if (prim->size_type () == be_decl::VARIABLE)
{
switch (bt->node_type ())
{