https://git.reactos.org/?p=reactos.git;a=commitdiff;h=9ff3adb7d7c6636a1d040d...
commit 9ff3adb7d7c6636a1d040d8e53f7203e9d1815a3 Author: Victor Perevertkin victor.perevertkin@reactos.org AuthorDate: Thu Apr 9 02:08:10 2020 +0300 Commit: Victor Perevertkin victor.perevertkin@reactos.org CommitDate: Thu Apr 9 02:08:10 2020 +0300
[ROSAUTOTEST] Change custom auto_array_ptr to std::unique_ptr --- modules/rostests/rosautotest/CMakeLists.txt | 1 + modules/rostests/rosautotest/CProcess.cpp | 6 +-- modules/rostests/rosautotest/CWebService.cpp | 30 ++++++------- modules/rostests/rosautotest/auto_array_ptr.h | 64 --------------------------- modules/rostests/rosautotest/precomp.h | 2 +- 5 files changed, 20 insertions(+), 83 deletions(-)
diff --git a/modules/rostests/rosautotest/CMakeLists.txt b/modules/rostests/rosautotest/CMakeLists.txt index 21f0cdd5e23..f6b29583f6d 100644 --- a/modules/rostests/rosautotest/CMakeLists.txt +++ b/modules/rostests/rosautotest/CMakeLists.txt @@ -21,6 +21,7 @@ list(APPEND SOURCE precomp.h)
add_executable(rosautotest ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/rosautotestmsg.rc) +set_property(TARGET rosautotest PROPERTY CXX_STANDARD 11) set_module_type(rosautotest win32cui UNICODE) add_importlibs(rosautotest advapi32 shell32 user32 wininet msvcrt kernel32 ntdll) add_pch(rosautotest precomp.h SOURCE) diff --git a/modules/rostests/rosautotest/CProcess.cpp b/modules/rostests/rosautotest/CProcess.cpp index e462456564c..b7ca0603817 100644 --- a/modules/rostests/rosautotest/CProcess.cpp +++ b/modules/rostests/rosautotest/CProcess.cpp @@ -18,11 +18,11 @@ */ CProcess::CProcess(const wstring& CommandLine, LPSTARTUPINFOW StartupInfo) { - auto_array_ptr<WCHAR> CommandLinePtr(new WCHAR[CommandLine.size() + 1]); + unique_ptr<WCHAR[]> CommandLinePtr(new WCHAR[CommandLine.size() + 1]);
- wcscpy(CommandLinePtr, CommandLine.c_str()); + wcscpy(CommandLinePtr.get(), CommandLine.c_str());
- if(!CreateProcessW(NULL, CommandLinePtr, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, StartupInfo, &m_ProcessInfo)) + if(!CreateProcessW(NULL, CommandLinePtr.get(), NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, StartupInfo, &m_ProcessInfo)) TESTEXCEPTION("CreateProcessW failed\n"); }
diff --git a/modules/rostests/rosautotest/CWebService.cpp b/modules/rostests/rosautotest/CWebService.cpp index 85ead6d9135..59d856a52d1 100644 --- a/modules/rostests/rosautotest/CWebService.cpp +++ b/modules/rostests/rosautotest/CWebService.cpp @@ -66,7 +66,7 @@ CWebService::DoRequest(const string& InputData) { const WCHAR szHeaders[] = L"Content-Type: application/x-www-form-urlencoded";
- auto_array_ptr<char> Data; + unique_ptr<char[]> Data; DWORD DataLength;
/* Post our test results to the web service */ @@ -76,9 +76,9 @@ CWebService::DoRequest(const string& InputData) FATAL("HttpOpenRequestW failed\n");
Data.reset(new char[InputData.size() + 1]); - strcpy(Data, InputData.c_str()); + strcpy(Data.get(), InputData.c_str());
- if(!HttpSendRequestW(m_hHTTPRequest, szHeaders, lstrlenW(szHeaders), Data, (DWORD)InputData.size())) + if(!HttpSendRequestW(m_hHTTPRequest, szHeaders, lstrlenW(szHeaders), Data.get(), (DWORD)InputData.size())) FATAL("HttpSendRequestW failed\n");
/* Get the response */ @@ -87,7 +87,7 @@ CWebService::DoRequest(const string& InputData)
Data.reset(new char[DataLength + 1]);
- if(!InternetReadFile(m_hHTTPRequest, Data, DataLength, &DataLength)) + if(!InternetReadFile(m_hHTTPRequest, Data.get(), DataLength, &DataLength)) FATAL("InternetReadFile failed\n");
Data[DataLength] = 0; @@ -104,7 +104,7 @@ CWebService::DoRequest(const string& InputData) void CWebService::Finish(const char* TestType) { - auto_array_ptr<char> Response; + unique_ptr<char[]> Response; string Data; stringstream ss;
@@ -120,9 +120,9 @@ CWebService::Finish(const char* TestType)
Response.reset(DoRequest(Data));
- if (strcmp(Response, "OK")) + if (strcmp(Response.get(), "OK")) { - ss << "When finishing the test run, the server responded:" << endl << Response << endl; + ss << "When finishing the test run, the server responded:" << endl << Response.get() << endl; SSEXCEPTION; } } @@ -178,7 +178,7 @@ CWebService::GetTestID(const char* TestType) PCHAR CWebService::GetSuiteID(const char* TestType, CTestInfo* TestInfo) { - auto_array_ptr<char> SuiteID; + unique_ptr<char[]> SuiteID; string Data;
Data = "action=getsuiteid"; @@ -193,11 +193,11 @@ CWebService::GetSuiteID(const char* TestType, CTestInfo* TestInfo) SuiteID.reset(DoRequest(Data));
/* Verify that this is really a number */ - if(!IsNumber(SuiteID)) + if(!IsNumber(SuiteID.get())) { stringstream ss;
- ss << "Expected Suite ID, but received:" << endl << SuiteID << endl; + ss << "Expected Suite ID, but received:" << endl << SuiteID.get() << endl; SSEXCEPTION; }
@@ -216,8 +216,8 @@ CWebService::GetSuiteID(const char* TestType, CTestInfo* TestInfo) void CWebService::Submit(const char* TestType, CTestInfo* TestInfo) { - auto_array_ptr<char> Response; - auto_array_ptr<char> SuiteID; + unique_ptr<char[]> Response; + unique_ptr<char[]> SuiteID; string Data; stringstream ss;
@@ -233,15 +233,15 @@ CWebService::Submit(const char* TestType, CTestInfo* TestInfo) Data += "&testid="; Data += m_TestID; Data += "&suiteid="; - Data += SuiteID; + Data += SuiteID.get(); Data += "&log="; Data += EscapeString(TestInfo->Log);
Response.reset(DoRequest(Data));
- if (strcmp(Response, "OK")) + if (strcmp(Response.get(), "OK")) { - ss << "When submitting the result, the server responded:" << endl << Response << endl; + ss << "When submitting the result, the server responded:" << endl << Response.get() << endl; SSEXCEPTION; } } diff --git a/modules/rostests/rosautotest/auto_array_ptr.h b/modules/rostests/rosautotest/auto_array_ptr.h deleted file mode 100644 index f53c3b04552..00000000000 --- a/modules/rostests/rosautotest/auto_array_ptr.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * PROJECT: ReactOS Automatic Testing Utility - * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) - * PURPOSE: Template similar to std::auto_ptr for arrays - * COPYRIGHT: Copyright 2009 Colin Finck (colin@reactos.org) - */ - -template<typename Type> -class auto_array_ptr -{ -private: - Type* m_Ptr; - -public: - typedef Type element_type; - - /* Construct an auto_array_ptr from a pointer */ - explicit auto_array_ptr(Type* Ptr = 0) throw() - : m_Ptr(Ptr) - { - } - - /* Construct an auto_array_ptr from an existing auto_array_ptr */ - auto_array_ptr(auto_array_ptr<Type>& Right) throw() - : m_Ptr(Right.release()) - { - } - - /* Destruct the auto_array_ptr and remove the corresponding array from memory */ - ~auto_array_ptr() throw() - { - delete[] m_Ptr; - } - - /* Get the pointer address */ - Type* get() const throw() - { - return m_Ptr; - } - - /* Release the pointer */ - Type* release() throw() - { - Type* Tmp = m_Ptr; - m_Ptr = 0; - - return Tmp; - } - - /* Reset to a new pointer */ - void reset(Type* Ptr = 0) throw() - { - if(Ptr != m_Ptr) - delete[] m_Ptr; - - m_Ptr = Ptr; - } - - /* Simulate all the functionality of real arrays by casting the auto_array_ptr to Type* on demand */ - operator Type*() const throw() - { - return m_Ptr; - } -}; diff --git a/modules/rostests/rosautotest/precomp.h b/modules/rostests/rosautotest/precomp.h index 5e0f05b5794..0f46388a5e2 100644 --- a/modules/rostests/rosautotest/precomp.h +++ b/modules/rostests/rosautotest/precomp.h @@ -33,7 +33,7 @@ using namespace std; #include <reactos/buildno.h>
/* Class includes */ -#include "auto_array_ptr.h" +// #include "auto_array_ptr.h" #include "CConfiguration.h" #include "CFatalException.h" #include "CInvalidParameterException.h"