So,

        Trying to unwind why the linux tinderboxen seem to like to crash during
build of udkapi - it seemed (to me) that there was some horrible stack
corruption going on - which valgrind simply can't see. Re-building with
the attached makes the problem go away for me (even more annoying) -
though valgrind shows nothing; so (assuming I'm right) I guess I'm just
moving objects away from the stack corruption onto the heap (so we
survive) but not finding the underlying problem.

        Annoying; I guess a H/W watchpoint is needed; but ... anyhow - bit
tired for that.

        HTH,

                Michael.

-- 
[email protected]  <><, Pseudo Engineer, itinerant idiot
diff --git a/codemaker/inc/codemaker/dependencies.hxx b/codemaker/inc/codemaker/dependencies.hxx
index b46e7f3..2e4e0f5 100644
--- a/codemaker/inc/codemaker/dependencies.hxx
+++ b/codemaker/inc/codemaker/dependencies.hxx
@@ -116,7 +116,7 @@ private:
 
     void insert(rtl::OString const & type, bool base);
 
-    Map m_map;
+    Map &m_map;
     bool m_valid;
     bool m_voidDependency;
     bool m_booleanDependency;
diff --git a/codemaker/inc/codemaker/options.hxx b/codemaker/inc/codemaker/options.hxx
index 22b09ce..bd2acd8 100644
--- a/codemaker/inc/codemaker/options.hxx
+++ b/codemaker/inc/codemaker/options.hxx
@@ -64,10 +64,10 @@ public:
     inline const StringVector& getExtraInputFiles() const
         { return m_extra_input_files; }
 protected:
-    ::rtl::OString  m_program;
-    StringVector    m_inputFiles;
-    StringVector    m_extra_input_files;
-    OptionMap       m_options;
+    ::rtl::OString  &m_program;
+    StringVector    &m_inputFiles;
+    StringVector    &m_extra_input_files;
+    OptionMap       &m_options;
 };
 
 #endif // INCLUDED_CODEMAKER_OPTIONS_HXX
diff --git a/codemaker/source/codemaker/dependencies.cxx b/codemaker/source/codemaker/dependencies.cxx
index 9d2e769..74a71f8 100644
--- a/codemaker/source/codemaker/dependencies.cxx
+++ b/codemaker/source/codemaker/dependencies.cxx
@@ -43,6 +43,7 @@ struct Bad {};
 
 Dependencies::Dependencies(
     TypeManager const & manager, rtl::OString const & type):
+    m_map(*(new Map())),
     m_voidDependency(false), m_booleanDependency(false),
     m_byteDependency(false), m_shortDependency(false),
     m_unsignedShortDependency(false), m_longDependency(false),
@@ -120,7 +121,9 @@ Dependencies::Dependencies(
 }
 
 Dependencies::~Dependencies()
-{}
+{
+    delete &m_map;
+}
 
 void Dependencies::insert(rtl::OUString const & type, bool base) {
     rtl::OString t;
diff --git a/codemaker/source/codemaker/options.cxx b/codemaker/source/codemaker/options.cxx
index 59706d9..e2bbac2 100644
--- a/codemaker/source/codemaker/options.cxx
+++ b/codemaker/source/codemaker/options.cxx
@@ -22,13 +22,20 @@
 
 using ::rtl::OString;
 
-Options::Options()
+Options::Options() :
+    m_program(*(new ::rtl::OString())),
+    m_inputFiles(*(new StringVector())),
+    m_extra_input_files(*(new StringVector())),
+    m_options(*(new OptionMap()))
 {
 }
 
 Options::~Options()
 {
-
+    delete &m_program;
+    delete &m_inputFiles;
+    delete &m_extra_input_files;
+    delete &m_options;
 }
 
 const OString& Options::getProgramName() const
diff --git a/codemaker/source/cppumaker/cppumaker.cxx b/codemaker/source/cppumaker/cppumaker.cxx
index c3aee2a..69c1fd0 100644
--- a/codemaker/source/cppumaker/cppumaker.cxx
+++ b/codemaker/source/cppumaker/cppumaker.cxx
@@ -141,7 +141,7 @@ void produceAllTypes(const OString& typeName,
 
 SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
 {
-    CppuOptions options;
+    CppuOptions &options = *(new CppuOptions());
 
     try
     {
@@ -156,7 +156,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
         exit(99);
     }
 
-    RegistryTypeManager typeMgr;
+    RegistryTypeManager &typeMgr = *(new RegistryTypeManager());
 
     if (!typeMgr.init(options.getInputFiles(), options.getExtraInputFiles()))
     {
@@ -169,7 +169,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
         typeMgr.setBase(options.getOption("-B"));
     }
 
-    codemaker::GeneratedTypeSet generated;
+    codemaker::GeneratedTypeSet &generated = *(new codemaker::GeneratedTypeSet());
     try
     {
         if (options.isValid("-T"))
diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index eca0143..bb276af 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -159,7 +159,7 @@ CppuType::CppuType(typereg::Reader& typeReader,
     , m_name(typeName.copy(typeName.lastIndexOf('/') + 1))
     , m_reader(typeReader)
     , m_typeMgr(typeMgr)
-    , m_dependencies(typeMgr, typeName)
+    , m_dependencies(*(new codemaker::Dependencies(typeMgr, typeName)))
 {}
 
 CppuType::~CppuType()
@@ -4438,10 +4438,11 @@ bool produceType(RegistryKey& rTypeKey, bool bIsExtraType,
     {
         case RT_TYPE_INTERFACE:
             {
-                InterfaceType iType(reader, typeName, typeMgr);
+                InterfaceType &iType = *(new InterfaceType(reader, typeName, typeMgr));
                 ret = iType.dump(pOptions);
                 if (ret) generated.add(typeName);
                 iType.dumpDependedTypes(generated, pOptions);
+                delete &iType;
             }
             break;
         case RT_TYPE_MODULE:
diff --git a/codemaker/source/cppumaker/cpputype.hxx b/codemaker/source/cppumaker/cpputype.hxx
index a2781cb..303da20 100644
--- a/codemaker/source/cppumaker/cpputype.hxx
+++ b/codemaker/source/cppumaker/cpputype.hxx
@@ -145,7 +145,7 @@ protected:
     ::rtl::OString      m_name;
     typereg::Reader     m_reader;
     TypeManager const & m_typeMgr;
-    codemaker::Dependencies m_dependencies;
+    codemaker::Dependencies &m_dependencies;
 
 private:
     void addGetCppuTypeIncludes(codemaker::cppumaker::Includes & includes)
_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to