summaryrefslogtreecommitdiffstats
path: root/src/corelib/io
diff options
context:
space:
mode:
authorDenis Dzyubenko <denis.dzyubenko@nokia.com>2009-11-30 16:08:53 (GMT)
committerDenis Dzyubenko <denis.dzyubenko@nokia.com>2009-11-30 16:18:44 (GMT)
commitda3bf86ecea14a8658601803e14820a28e7470d6 (patch)
tree6a7f36735bf245d826711692a30ff5b6a31c76ec /src/corelib/io
parentb5bf6d68bdde5f5db1d72179f4e20dc1e21d20c4 (diff)
downloadQt-da3bf86ecea14a8658601803e14820a28e7470d6.zip
Qt-da3bf86ecea14a8658601803e14820a28e7470d6.tar.gz
Qt-da3bf86ecea14a8658601803e14820a28e7470d6.tar.bz2
Fixes a crash on Mac with QFileInfo.
realpath() crashes on mac if the input file path is the root ("/") - on 10.6 calling a free on the returned value shows a warning saying the memory was not allocated. To workaround that just added a special case - if the input string is '/', we don't need to use realpath as we already know that the path is canonical. Reviewed-by: Prasanth
Diffstat (limited to 'src/corelib/io')
-rw-r--r--src/corelib/io/qfsfileengine.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp
index efc09a0..b8f6e2c 100644
--- a/src/corelib/io/qfsfileengine.cpp
+++ b/src/corelib/io/qfsfileengine.cpp
@@ -139,7 +139,11 @@ QString QFSFileEnginePrivate::canonicalized(const QString &path)
return path;
#if defined(Q_OS_UNIX) || defined(Q_OS_SYMBIAN)
- // FIXME let's see if this stuff works, then we might be able to remove some of the other code
+ // FIXME let's see if this stuff works, then we might be able to remove some of the other code.
+ // baaad Mac: 10.5 and 10.6 crash if trying to free a value returned by
+ // realpath() if the input path is just the root component.
+ if (path.size() == 1 && path.at(0) == QLatin1Char('/'))
+ return path;
char *ret = realpath(path.toLocal8Bit().constData(), (char*)0);
if (ret) {
QString canonicalPath = QDir::cleanPath(QString::fromLocal8Bit(ret));