summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormcorino <mcorino@users.noreply.github.com>2007-01-31 22:47:56 +0000
committermcorino <mcorino@users.noreply.github.com>2007-01-31 22:47:56 +0000
commitfd91b05d385c8ab197e0433fc0faf7498a043c4e (patch)
tree36b11f74a50d394b5b8e41c2d475a77077418a1e
parent8110441969cc430b1237a4027aeeecb30cba4801 (diff)
downloadATCD-fd91b05d385c8ab197e0433fc0faf7498a043c4e.tar.gz
ChangeLogTag: Wed Jan 31 22:49:14 2007 Martin Corino <mcorino@remedy.nl>
-rw-r--r--TAO/ChangeLog11
-rw-r--r--TAO/tao/DynamicAny/DynUnion_i.cpp4
2 files changed, 14 insertions, 1 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 17aa624cbd3..bdf0972d1fd 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,14 @@
+Wed Jan 31 22:49:14 2007 Martin Corino <mcorino@remedy.nl>
+
+ * tao/DynamicAny/DynUnion_i.cpp:
+
+ Changed to handle inconsistency between statically declared (IDL
+ compiler) union typecodes and dynamically declared typecodes where
+ the discriminator type is an enum.
+ With statically declared typecodes the label values are stored as
+ actual enum values while with dynamically stored typecodes these
+ label values are stored as ULong.
+
Wed Jan 31 19:00:44 UTC 2007 Chad Elliott <elliott_c@ociweb.com>
* tests/LongDouble:
diff --git a/TAO/tao/DynamicAny/DynUnion_i.cpp b/TAO/tao/DynamicAny/DynUnion_i.cpp
index 0ca2d0f5541..f5e48d77746 100644
--- a/TAO/tao/DynamicAny/DynUnion_i.cpp
+++ b/TAO/tao/DynamicAny/DynUnion_i.cpp
@@ -86,7 +86,9 @@ TAO_DynUnion_i::init (CORBA::TypeCode_ptr tc)
// Initialize the discriminator to the label value of the first member.
CORBA::TypeCode_var disc_tc = unaliased_tc->discriminator_type ();
CORBA::TCKind disc_kind = TAO_DynAnyFactory::unalias (disc_tc.in ());
- if (disc_kind == CORBA::tk_enum)
+ CORBA::TCKind label_kind = TAO_DynAnyFactory::unalias (first_label->_tao_get_typecode ());
+ if (disc_kind == CORBA::tk_enum &&
+ label_kind == CORBA::tk_ulong)
{
// incase the discriminator is an enum type we have to walk
// a slightly more complex path because enum labels are