summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-12-07 21:51:54 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-12-07 21:51:54 +0000
commit11d5cb6886e253120938518887e2f877c3ad51da (patch)
tree061991565a2672a1ef91ec3ab494dafbc1ba7361
parent4b907c0788d7ae7266cd87c9224536840dfe1cb1 (diff)
downloadATCD-11d5cb6886e253120938518887e2f877c3ad51da.tar.gz
ChangeLogTag: Tue Dec 7 21:49:36 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog8
-rw-r--r--TAO/TAO_IDL/be/be_codegen.cpp48
-rw-r--r--TAO/TAO_IDL/be_include/be_codegen.h4
3 files changed, 39 insertions, 21 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 05981f79315..eec47ea62c4 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,11 @@
+Tue Dec 7 21:49:36 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * TAO_IDL/be/be_codegen.cpp:
+ * TAO_IDL/be_include/be_codegen.h:
+
+ Fixed a double deletion problem when OpenDDS is the DDS
+ implementation and connector IDL is processed.
+
Tue Dec 7 20:07:32 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/include/idl_global.h:
diff --git a/TAO/TAO_IDL/be/be_codegen.cpp b/TAO/TAO_IDL/be/be_codegen.cpp
index e90e1e6c134..c7ef101a433 100644
--- a/TAO/TAO_IDL/be/be_codegen.cpp
+++ b/TAO/TAO_IDL/be/be_codegen.cpp
@@ -3395,35 +3395,20 @@ TAO_CodeGen::gen_conn_hdr_includes (void)
switch (the_dds_impl)
{
case BE_GlobalData::NDDS:
+ this->gen_conn_ts_includes (
+ idl_global->ciao_rti_ts_file_names ());
break;
case BE_GlobalData::OPENSPLICE:
- ts_files =
- idl_global->ciao_spl_ts_file_names ();
+ this->gen_conn_ts_includes (
+ idl_global->ciao_spl_ts_file_names ());
break;
case BE_GlobalData::OPENDDS:
- ts_files =
- idl_global->ciao_oci_ts_file_names ();
+ this->gen_conn_ts_includes (
+ idl_global->ciao_oci_ts_file_names ());
break;
case BE_GlobalData::NONE:
break;
}
-
- if (ts_files.size () > 0)
- {
- *this->ciao_conn_header_ << be_nl;
- }
-
- for (ACE_Unbounded_Queue_Iterator<char *> iter (
- ts_files);
- iter.done () == 0;
- iter.advance ())
- {
- iter.next (path_tmp);
-
- this->gen_standard_include (
- this->ciao_conn_header_,
- *path_tmp);
- }
}
for (ACE_Unbounded_Queue<char *>::CONST_ITERATOR iiter (
@@ -3581,6 +3566,27 @@ TAO_CodeGen::make_rand_extension (char * const t)
}
void
+TAO_CodeGen::gen_conn_ts_includes (
+ ACE_Unbounded_Queue<char *> &ts_files)
+{
+ if (ts_files.size () > 0)
+ {
+ *this->ciao_conn_header_ << be_nl;
+ }
+
+ char **tmp = 0;
+
+ for (ACE_Unbounded_Queue_Iterator<char *> i (ts_files);
+ !i.done ();
+ i.advance ())
+ {
+ i.next (tmp);
+ this->gen_standard_include (this->ciao_conn_header_,
+ *tmp);
+ }
+}
+
+void
TAO_CodeGen::destroy (void)
{
delete this->client_header_;
diff --git a/TAO/TAO_IDL/be_include/be_codegen.h b/TAO/TAO_IDL/be_include/be_codegen.h
index dad318e6a64..3f240b82ebb 100644
--- a/TAO/TAO_IDL/be_include/be_codegen.h
+++ b/TAO/TAO_IDL/be_include/be_codegen.h
@@ -18,6 +18,8 @@
#include "ace/Singleton.h"
#include "ace/Synch_Traits.h"
+#include "ace/Unbounded_Queue.h"
+
#include "TAO_IDL_BE_Export.h"
class TAO_OutStream;
@@ -430,6 +432,8 @@ private:
void make_rand_extension (char * const t);
+ void gen_conn_ts_includes (ACE_Unbounded_Queue<char *> &ts_files);
+
private:
/// Client header stream.
TAO_OutStream *client_header_;