NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bin/37347 (ld.elf_so does not execute .init/.fini functions in order)



   I know this comment is a bit late in coming, but I've only just
discovered the relationship of my bug to this one. The December 7,
2007, change to ld.elf_so seems to have broken finance/kmymoney2.
On startup the code hits a null pointer in a QString while trying
to run the static initializers for one of kmymoney's shared libraries.
It seems the Qt folks have anticipated the problem, though, since
they have an OS-specific workaround in place. Adding NetBSD to the
workaround lets kmymoney2 start up again:

===========================================================================
--- src/tools/qstring.cpp.orig  2007-02-02 09:01:05.000000000 -0500
+++ src/tools/qstring.cpp       2009-05-17 12:20:46.000000000 -0400
@@ -1362,7 +1362,7 @@
 QStringData* QString::makeSharedNull()
 {   
     QString::shared_null = new QStringData;
-#if defined( Q_OS_MAC ) || defined(Q_OS_SOLARIS) || defined(Q_OS_HPUX) || 
defined(Q_OS_AIX)
+#if defined( Q_OS_MAC ) || defined(Q_OS_SOLARIS) || defined(Q_OS_HPUX) || 
defined(Q_OS_AIX) || defined(Q_OS_NETBSD)
     QString *that = const_cast<QString *>(&QString::null);
     that->d = QString::shared_null;
 #endif
===========================================================================

   So the question is whether the change is a bug or if the previous
behavior was wrong. Personally, I wouldn't expect the above code
to set QString::shared_null to zero as I was seeing before the
workaround.

                                        Gary Duzan




Home | Main Index | Thread Index | Old Index