Commit eadf9e54 authored by Christian Strømme's avatar Christian Strømme Committed by Liang Qi
Browse files

Android: Don't rely on QDir::homePath() to get the application directory


If the QLoggingRegistry gets called as part of the static initialization
phase, it would call into Android's QStandarPaths implementation, which
assumed that the HOME env. variable was already set. Since the variable
isn't set before main is called, QDir::homePath() returns the root path,
which would be cached and always returned.

With this fix we now call Android's getFilesDir() directly, which will
always return the right path. Since the font locations are also relying
on an environment variable being set, we no longer cache that either.

Task-number: QTBUG-65820
Change-Id: If45f3d5f0e87b808a62118ae95c31b492885646a
Reviewed-by: default avatarTor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: default avatarEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Showing with 13 additions and 2 deletions
......@@ -217,7 +217,16 @@ static QString getFilesDir()
if (!path.isEmpty())
return path;
return (path = QDir::homePath());
QJNIObjectPrivate appCtx = applicationContext();
if (!appCtx.isValid())
return QString();
QJNIObjectPrivate file = appCtx.callObjectMethod("getFilesDir",
"()Ljava/io/File;");
if (!file.isValid())
return QString();
return (path = getAbsolutePath(file));
}
QString QStandardPaths::writableLocation(StandardLocation type)
......@@ -319,7 +328,9 @@ QStringList QStandardPaths::standardLocations(StandardLocation type)
if (!ba.isEmpty())
return QStringList((fontLocation = QDir::cleanPath(QString::fromLocal8Bit(ba))));
return QStringList((fontLocation = QLatin1String("/system/fonts")));
// Don't cache the fallback, as we might just have been called before
// QT_ANDROID_FONT_LOCATION has been set.
return QStringList(QLatin1String("/system/fonts"));
}
return QStringList(writableLocation(type));
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment