QProcess: reimplement systemEnvironment() using QProcessEnvironment
[ChangeLog][QtCore][QProcess] Fixed a bug that would cause systemEnvironment() to produce corrupted entries (mojibake) on Windows if the environment contains characters outside of the ANSI character set. Pick-to: 6.2 6.5 Change-Id: Idd5e1bb52be047d7b4fffffd174db6c1024318dd Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
This commit is contained in:
parent
69d3e96e02
commit
617165af6b
@ -2447,18 +2447,6 @@ bool QProcess::startDetached(const QString &program,
|
|||||||
return process.startDetached(pid);
|
return process.startDetached(pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
QT_BEGIN_INCLUDE_NAMESPACE
|
|
||||||
#if defined(Q_OS_MACOS)
|
|
||||||
# include <crt_externs.h>
|
|
||||||
# define environ (*_NSGetEnviron())
|
|
||||||
#elif defined(QT_PLATFORM_UIKIT)
|
|
||||||
Q_CONSTINIT static char *qt_empty_environ[] = { 0 };
|
|
||||||
#define environ qt_empty_environ
|
|
||||||
#elif !defined(Q_OS_WIN)
|
|
||||||
extern char **environ;
|
|
||||||
#endif
|
|
||||||
QT_END_INCLUDE_NAMESPACE
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\since 4.1
|
\since 4.1
|
||||||
|
|
||||||
@ -2480,12 +2468,7 @@ QT_END_INCLUDE_NAMESPACE
|
|||||||
*/
|
*/
|
||||||
QStringList QProcess::systemEnvironment()
|
QStringList QProcess::systemEnvironment()
|
||||||
{
|
{
|
||||||
QStringList tmp;
|
return QProcessEnvironment::systemEnvironment().toStringList();
|
||||||
char *entry = nullptr;
|
|
||||||
int count = 0;
|
|
||||||
while ((entry = environ[count++]))
|
|
||||||
tmp << QString::fromLocal8Bit(entry);
|
|
||||||
return tmp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
Loading…
Reference in New Issue
Block a user