summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsma <sma@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-12-01 14:13:08 +0000
committersma <sma@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-12-01 14:13:08 +0000
commit70f3b825dee287df493279abfacd74c68cf0d729 (patch)
treed1262b83c7fcc2c3b349df17969663ebe3e061e3
parentb9f5804bc6355e132ee5f79d47e41e279fc45111 (diff)
downloadATCD-70f3b825dee287df493279abfacd74c68cf0d729.tar.gz
ChangeLogTag: Wed Dec 1 14:00:00 UTC 2004 Simon Massey <sma@prismtech.com>
-rw-r--r--TAO/ChangeLog9
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/AliasDef_i.cpp7
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/StructDef_i.cpp6
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/UnionDef_i.cpp13
4 files changed, 35 insertions, 0 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index a1377790c39..6cfeefe2389 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,12 @@
+Wed Dec 1 14:00:00 UTC 2004 Simon Massey <sma@prismtech.com>
+
+ * TAO/orbsvcs/orbsvcs/IFRService/AliasDef_i.cpp
+ * TAO/orbsvcs/orbsvcs/IFRService/StructDef_i.cpp
+ * TAO/orbsvcs/orbsvcs/IFRService/UnionDef_i.cpp
+
+ Fixed bugzilla 1996 - IFR - Derefferencing NULL pointer
+ when compound object has been deleted
+
Wed Dec 1 07:18:37 2004 Chad Elliott <elliott_c@ociweb.com>
* orbsvcs/tests/FT_App/FT_Client.cpp:
diff --git a/TAO/orbsvcs/orbsvcs/IFRService/AliasDef_i.cpp b/TAO/orbsvcs/orbsvcs/IFRService/AliasDef_i.cpp
index 084bdac4ec0..aa81a2ab1ff 100644
--- a/TAO/orbsvcs/orbsvcs/IFRService/AliasDef_i.cpp
+++ b/TAO/orbsvcs/orbsvcs/IFRService/AliasDef_i.cpp
@@ -63,6 +63,13 @@ TAO_AliasDef_i::type_i (ACE_ENV_SINGLE_ARG_DECL)
TAO_IDLType_i *impl =
TAO_IFR_Service_Utils::path_to_idltype (original_type,
this->repo_);
+ ACE_CHECK_RETURN (CORBA::TypeCode::_nil ());
+
+ if (0 == impl)
+ {
+ ACE_THROW( CORBA::OBJECT_NOT_EXIST() );
+ ACE_CHECK_RETURN (CORBA::TypeCode::_nil ());
+ }
CORBA::TypeCode_var tc = impl->type_i (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::TypeCode::_nil ());
diff --git a/TAO/orbsvcs/orbsvcs/IFRService/StructDef_i.cpp b/TAO/orbsvcs/orbsvcs/IFRService/StructDef_i.cpp
index 6e3d2bbddb4..5c0e90660f2 100644
--- a/TAO/orbsvcs/orbsvcs/IFRService/StructDef_i.cpp
+++ b/TAO/orbsvcs/orbsvcs/IFRService/StructDef_i.cpp
@@ -208,6 +208,12 @@ TAO_StructDef_i::members_i (ACE_ENV_SINGLE_ARG_DECL)
impl = TAO_IFR_Service_Utils::path_to_idltype (path,
this->repo_);
+ ACE_CHECK_RETURN (0);
+ if (0 == impl)
+ {
+ ACE_THROW(CORBA::OBJECT_NOT_EXIST());
+ ACE_CHECK_RETURN (0);
+ }
retval[k].type = impl->type_i (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
diff --git a/TAO/orbsvcs/orbsvcs/IFRService/UnionDef_i.cpp b/TAO/orbsvcs/orbsvcs/IFRService/UnionDef_i.cpp
index 827a5049395..85c24eadc82 100644
--- a/TAO/orbsvcs/orbsvcs/IFRService/UnionDef_i.cpp
+++ b/TAO/orbsvcs/orbsvcs/IFRService/UnionDef_i.cpp
@@ -122,6 +122,13 @@ TAO_UnionDef_i::discriminator_type_i (ACE_ENV_SINGLE_ARG_DECL)
TAO_IDLType_i *impl =
TAO_IFR_Service_Utils::path_to_idltype (disc_path,
this->repo_);
+ ACE_CHECK_RETURN (CORBA::TypeCode::_nil ());
+
+ if (0 == impl)
+ {
+ ACE_THROW(CORBA::OBJECT_NOT_EXIST());
+ ACE_CHECK_RETURN (CORBA::TypeCode::_nil ());
+ }
return impl->type_i (ACE_ENV_SINGLE_ARG_PARAMETER);
}
@@ -292,6 +299,12 @@ TAO_UnionDef_i::members_i (ACE_ENV_SINGLE_ARG_DECL)
impl = TAO_IFR_Service_Utils::path_to_idltype (path,
this->repo_);
+ ACE_CHECK_RETURN (0);
+ if (0 == impl)
+ {
+ ACE_THROW(CORBA::OBJECT_NOT_EXIST());
+ ACE_CHECK_RETURN (0);
+ }
retval[k].type = impl->type_i (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);