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