From 4b7e3271e3ad8b2fda6fadead733a3fa9bad8dab Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周日, 25 10月 2020 20:10:00 +0800
Subject: [PATCH] disk strategy failing on windows

---
 src/library/hw_identifier/disk_strategy.cpp |    7 ++-----
 .github/workflows/cpp.yml                   |    6 +++++-
 src/library/os/windows/os_win.cpp           |   10 +++++-----
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml
index b2ecbe1..ffbb69e 100644
--- a/.github/workflows/cpp.yml
+++ b/.github/workflows/cpp.yml
@@ -12,6 +12,8 @@
       shell: bash
       run: echo "BOOST_ROOT=$BOOST_ROOT_1_72_0" >> $GITHUB_ENV
     - name: Compile
+      env:
+        CTEST_OUTPUT_ON_FAILURE: 1
       run: |
         cd build
         cmake -G "Visual Studio 16 2019" -DLCC_PROJECT_NAME:STRING=test ..
@@ -22,4 +24,6 @@
         cd build 
         ctest -C Debug
       shell: bash
-      
\ No newline at end of file
+    - name: The job has failed
+      if: ${{ failure() }}
+      run: type %TMP%\open-license.log
\ No newline at end of file
diff --git a/src/library/hw_identifier/disk_strategy.cpp b/src/library/hw_identifier/disk_strategy.cpp
index 5e50761..d0ebaed 100644
--- a/src/library/hw_identifier/disk_strategy.cpp
+++ b/src/library/hw_identifier/disk_strategy.cpp
@@ -41,7 +41,7 @@
 	v_disk_id.reserve(disk_infos.size() * 2);
 	for (int j = 0; j < 2; j++) {
 		bool preferred = (j == 0);
-		for (unsigned int i = 0; i < disk_infos.size(); i++) {
+		for (size_t i = 0; i < disk_infos.size(); i++) {
 			if (disk_infos[i].preferred == preferred) {
 				if (disk_infos[i].sn_initialized) {
 					array<uint8_t, HW_IDENTIFIER_PROPRIETARY_DATA> a_disk_id = generate_id_by_sn(disk_infos[i]);
@@ -51,13 +51,10 @@
 					array<uint8_t, HW_IDENTIFIER_PROPRIETARY_DATA> l_disk_id = generate_id_by_label(disk_infos[i]);
 					v_disk_id.push_back(l_disk_id);
 				}
-				if (preferred) {
-					break;
-				}
 			}
 		}
 	}
-	return FUNC_RET_OK;
+	return v_disk_id.size() > 0 ? FUNC_RET_OK : FUNC_RET_NOT_AVAIL;
 }
 
 DiskStrategy::~DiskStrategy() {}
diff --git a/src/library/os/windows/os_win.cpp b/src/library/os/windows/os_win.cpp
index cfa6b0d..ccb3652 100644
--- a/src/library/os/windows/os_win.cpp
+++ b/src/library/os/windows/os_win.cpp
@@ -47,17 +47,17 @@
 				BOOL success = GetVolumeInformation(szSingleDrive, volName, MAX_PATH, &volSerial, &fileMaxLen,
 													&fileFlags, fileSysName, MAX_PATH);
 				if (success) {
-					LOG_INFO("drive         : %s", szSingleDrive);
-					LOG_INFO("Volume Name   : %s", volName);
-					LOG_INFO("Volume Serial : 0x%x", volSerial);
-					LOG_DEBUG("Max file length : %d", fileMaxLen);
-					LOG_DEBUG("Filesystem      : %s", fileSysName);
+					LOG_DEBUG("drive: %s,volume Name: %s, Volume Serial: 0x%x,Filesystem: %s", szSingleDrive, volName,
+							  volSerial, fileSysName);
 					DiskInfo diskInfo;
+					memset(&diskInfo, 0, sizeof(diskInfo));
 					diskInfo.id = (int)ndrives;
+					diskInfo.label_initialized = true;
 					strncpy(diskInfo.device, volName, min(std::size_t{MAX_PATH}, sizeof(volName)) - 1);
 					strncpy(diskInfo.label, fileSysName,
 							min(sizeof(diskInfos[ndrives].label), sizeof(fileSysName)) - 1);
 					memcpy(diskInfo.disk_sn, &volSerial, sizeof(DWORD));
+					diskInfo.sn_initialized = true;
 					diskInfo.preferred = (szSingleDrive[0] == 'C');
 					diskInfos.push_back(diskInfo);
 					ndrives++;

--
Gitblit v1.9.1