From 37dbdd9b58f66be1394a78905e0892c5ee789c09 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 13 Jan 2025 04:37:51 -0800 Subject: [PATCH] QCoreApplicationPrivate: use std::unique_ptr for origArgv Change-Id: Id03feb55d3c3899aa4fffffdc0b3ee7b0742f9e8 Reviewed-by: Ahmad Samir (cherry picked from commit 981c2e8b746a9fb41164e6911d1609119bf1c600) --- src/corelib/kernel/qcoreapplication.cpp | 5 ++--- src/corelib/kernel/qcoreapplication_p.h | 4 +++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 17b39036747..984619668d6 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -435,8 +435,8 @@ QCoreApplicationPrivate::QCoreApplicationPrivate(int &aargc, char **aargv) #if defined(Q_OS_WIN) if (!isArgvModified(argc, argv)) { origArgc = argc; - origArgv = new char *[argc]; - std::copy(argv, argv + argc, QT_MAKE_CHECKED_ARRAY_ITERATOR(origArgv, argc)); + origArgv = q20::make_unique_for_overwrite(argc); + std::copy(argv, argv + argc, origArgv.get()); } #endif // Q_OS_WIN @@ -460,7 +460,6 @@ QCoreApplicationPrivate::~QCoreApplicationPrivate() cleanupThreadData(); #endif #if defined(Q_OS_WIN) - delete [] origArgv; cleanupDebuggingConsole(); #endif QCoreApplicationPrivate::clearApplicationFilePath(); diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h index dce8cee1cc6..3d9beaa9bed 100644 --- a/src/corelib/kernel/qcoreapplication_p.h +++ b/src/corelib/kernel/qcoreapplication_p.h @@ -127,8 +127,10 @@ public: int &argc; char **argv; #if defined(Q_OS_WIN) + // store unmodified arguments for QCoreApplication::arguments() int origArgc = 0; - char **origArgv = nullptr; // store unmodified arguments for QCoreApplication::arguments() + std::unique_ptr origArgv; + bool consoleAllocated = false; #endif void appendApplicationPathToLibraryPaths(void);