Commit 602d5eb61dfc51078aaeb086f956b500cd4a46af
1 parent
7f8e0a0d
Refactor QUtil::call_main_from_wmain
Showing
1 changed file
with
4 additions
and
4 deletions
libqpdf/QUtil.cc
| @@ -1899,7 +1899,8 @@ call_main_from_wmain( | @@ -1899,7 +1899,8 @@ call_main_from_wmain( | ||
| 1899 | // strings for compatibility with other systems. That way the rest of qpdf.cc can just act like | 1899 | // strings for compatibility with other systems. That way the rest of qpdf.cc can just act like |
| 1900 | // arguments are UTF-8. | 1900 | // arguments are UTF-8. |
| 1901 | 1901 | ||
| 1902 | - std::vector<std::unique_ptr<char[]>> utf8_argv; | 1902 | + std::vector<std::string> utf8_argv; |
| 1903 | + utf8_argv.reserve(QIntC::to_size(argc)); | ||
| 1903 | for (int i = 0; i < argc; ++i) { | 1904 | for (int i = 0; i < argc; ++i) { |
| 1904 | std::string utf16; | 1905 | std::string utf16; |
| 1905 | for (size_t j = 0; j < std::wcslen(argv[i]); ++j) { | 1906 | for (size_t j = 0; j < std::wcslen(argv[i]); ++j) { |
| @@ -1907,13 +1908,12 @@ call_main_from_wmain( | @@ -1907,13 +1908,12 @@ call_main_from_wmain( | ||
| 1907 | utf16.append(1, static_cast<char>(QIntC::to_uchar(codepoint >> 8))); | 1908 | utf16.append(1, static_cast<char>(QIntC::to_uchar(codepoint >> 8))); |
| 1908 | utf16.append(1, static_cast<char>(QIntC::to_uchar(codepoint & 0xff))); | 1909 | utf16.append(1, static_cast<char>(QIntC::to_uchar(codepoint & 0xff))); |
| 1909 | } | 1910 | } |
| 1910 | - std::string utf8 = QUtil::utf16_to_utf8(utf16); | ||
| 1911 | - utf8_argv.push_back(QUtil::make_unique_cstr(utf8)); | 1911 | + utf8_argv.emplace_back(QUtil::utf16_to_utf8(utf16)); |
| 1912 | } | 1912 | } |
| 1913 | auto utf8_argv_sp = std::make_unique<char*[]>(1 + utf8_argv.size()); | 1913 | auto utf8_argv_sp = std::make_unique<char*[]>(1 + utf8_argv.size()); |
| 1914 | char** new_argv = utf8_argv_sp.get(); | 1914 | char** new_argv = utf8_argv_sp.get(); |
| 1915 | for (size_t i = 0; i < utf8_argv.size(); ++i) { | 1915 | for (size_t i = 0; i < utf8_argv.size(); ++i) { |
| 1916 | - new_argv[i] = utf8_argv.at(i).get(); | 1916 | + new_argv[i] = utf8_argv.at(i).data(); |
| 1917 | } | 1917 | } |
| 1918 | argc = QIntC::to_int(utf8_argv.size()); | 1918 | argc = QIntC::to_int(utf8_argv.size()); |
| 1919 | new_argv[argc] = nullptr; | 1919 | new_argv[argc] = nullptr; |