diff options
author | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2009-11-30 16:08:53 (GMT) |
---|---|---|
committer | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2009-11-30 16:18:44 (GMT) |
commit | da3bf86ecea14a8658601803e14820a28e7470d6 (patch) | |
tree | 6a7f36735bf245d826711692a30ff5b6a31c76ec /src/corelib | |
parent | b5bf6d68bdde5f5db1d72179f4e20dc1e21d20c4 (diff) | |
download | Qt-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')
-rw-r--r-- | src/corelib/io/qfsfileengine.cpp | 6 |
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)); |