| From http://bugreports.qt.nokia.com/browse/QTBUG-8365 |
| |
| Starting a QtEmbedded-4.6.2 application linked against uClibc 0.9.30.1 results |
| in an immediate segmentation fault. |
| This is due to an incompatibility of the uClibc with the standard libc about |
| the "realpath" function. The man of the function clearly specifies that |
| "if resolved path (the second argument) is NULL, then realpath uses malloc to |
| allocate a buffer ...". However, uClibc doesn't support this functionality and |
| issues a warning at compile-time when the function is called with a NULL |
| argument. |
| --- |
| diff -aurp -x '*.o' qt-everywhere-opensource-src-4.6.2-old/src/corelib/io/qfsfileengine.cpp qt-everywhere-opensource-src-4.6.2/src/corelib/io/qfsfileengine.cpp |
| --- qt-everywhere-opensource-src-4.6.2-old/src/corelib/io/qfsfileengine.cpp 2010-02-11 16:55:23.000000000 +0100 |
| +++ qt-everywhere-opensource-src-4.6.2/src/corelib/io/qfsfileengine.cpp 2010-02-19 14:57:06.000000000 +0100 |
| @@ -145,10 +145,9 @@ QString QFSFileEnginePrivate::canonicali |
| #endif |
| // Mac OS X 10.5.x doesn't support the realpath(X,0) extenstion we use here. |
| #if defined(Q_OS_LINUX) || defined(Q_OS_SYMBIAN) |
| - char *ret = realpath(path.toLocal8Bit().constData(), (char*)0); |
| - if (ret) { |
| + char ret[PATH_MAX]; |
| + if (realpath(path.toLocal8Bit().constData(), ret)) { |
| QString canonicalPath = QDir::cleanPath(QString::fromLocal8Bit(ret)); |
| - free(ret); |
| return canonicalPath; |
| } |
| #endif |