From 95542b71760ba1be679353fab5d0b2a66a6867ce Mon Sep 17 00:00:00 2001 From: 13038267101 Date: Mon, 9 Jan 2023 17:16:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=95=B8=E5=8F=98=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/base/test_base.cpp | 44 +++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/code/base/test_base.cpp b/code/base/test_base.cpp index 050d3d3..69bdef1 100644 --- a/code/base/test_base.cpp +++ b/code/base/test_base.cpp @@ -876,10 +876,25 @@ public: { return SCANNER_ERR_DATA_DAMAGED; } - unsigned int len = 0; - int ret = SCANNER_ERR_OK; + wchar_t* p = (wchar_t*)data; + std::string str; + int ret = SCANNER_ERR_OK, + dpi = 0; + unsigned int len = sizeof(int); + size_t strl = 0; + ret = wchar_to_char(str, p, &strl); + if (ret == ERROR_INSUFFICIENT_BUFFER) + { + str.resize(strl); + ret = wchar_to_char(str, p, &strl); + } + if (str.empty()) + { + return SCANNER_ERR_DATA_DAMAGED; + } + dpi = atoi(str.c_str()); + ret = helper_->io_control(IO_CTRL_CODE_SET_DPI, &dpi, &len); - ret = helper_->io_control(IO_CTRL_CODE_SET_DPI, data, &len); if (ret != SCANNER_ERR_OK) { return -1; @@ -893,12 +908,29 @@ public: { return SCANNER_ERR_DATA_DAMAGED; } - int ret = SCANNER_ERR_OK, - val = 0; + wchar_t* p = (wchar_t*)data; + std::string str; + + + int ret = SCANNER_ERR_OK, + val = 0, + dpi = 0; SANE_Bool type = true; unsigned int len = sizeof(SANE_Bool), llen = sizeof(int); - ret = helper_->io_control(IO_CTRL_CODE_SET_DPI, &data, &len); + size_t strl = 0; + ret = wchar_to_char(str, p, &strl); + if (ret == ERROR_INSUFFICIENT_BUFFER) + { + str.resize(strl); + ret = wchar_to_char(str, p, &strl); + } + if (str.empty()) + { + return SCANNER_ERR_DATA_DAMAGED; + } + dpi = atoi(str.c_str()); + ret = helper_->io_control(IO_CTRL_CODE_SET_DPI, &dpi, &llen); ret = helper_->io_control(IO_CTRL_CODE_SET_DISTORTION_IMAGE, &type, &len); if (ret != SCANNER_ERR_OK)