aboutsummaryrefslogtreecommitdiff
path: root/package/qt/qt-4.6.2-fix-qt-uclibc-build.patch
blob: a76774bbc7e0e007ead2fe7c1749312849b7c3fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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