From fa2c56cb9f1861e0e7e485bceba74d3722e38793 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Tue, 23 Jun 2026 10:58:51 +0800 Subject: [PATCH] Global: fixes bugs found by CI The code quality is to be improved... --- doc/json_schema.json | 4 ++-- src/common/impl/edidHelper.c | 2 +- src/detection/codec/codec_linux.c | 2 +- src/detection/cpu/cpu_linux.c | 13 ++++++++----- src/detection/gpu/gpu.c | 14 +++++++------- src/detection/gpu/gpu_bsddrm.c | 2 +- src/detection/gpu/gpu_intel.c | 4 ++-- src/detection/wifi/wifi_bsd.c | 3 ++- src/modules/monitor/monitor.c | 2 +- 9 files changed, 25 insertions(+), 21 deletions(-) diff --git a/doc/json_schema.json b/doc/json_schema.json index 1defa1892..e9271b2ff 100644 --- a/doc/json_schema.json +++ b/doc/json_schema.json @@ -374,7 +374,7 @@ "type": "string" }, "gpuFormat": { - "description": "Output format for the `GPU` module. See Wiki for formatting syntax\n 1. {vendor}: GPU vendor\n 2. {name}: GPU name\n 3. {driver}: GPU driver\n 4. {temperature}: GPU temperature\n 5. {core-count}: GPU core count\n 6. {type}: GPU type\n 7. {dedicated-total}: GPU total dedicated memory\n 8. {dedicated-used}: GPU used dedicated memory\n 9. {shared-total}: GPU total shared memory\n 10. {shared-used}: GPU used shared memory\n 11. {platform-api}: The platform API used when detecting the GPU\n 12. {frequency}: Current frequency in GHz\n 13. {index}: GPU vendor specific index\n 14. {dedicated-percentage-num}: Dedicated memory usage percentage num\n 15. {dedicated-percentage-bar}: Dedicated memory usage percentage bar\n 16. {shared-percentage-num}: Shared memory usage percentage num\n 17. {shared-percentage-bar}: Shared memory usage percentage bar\n 18. {core-usage-num}: Core usage percentage num\n 19. {core-usage-bar}: Core usage percentage bar\n 20. {memory-type}: Memory type (Windows only)\n 21. {pcie-speed}: Maximum PCIe speed in gen and lanes", + "description": "Output format for the `GPU` module. See Wiki for formatting syntax\n 1. {vendor}: GPU vendor\n 2. {name}: GPU name\n 3. {driver}: GPU driver\n 4. {temperature}: GPU temperature\n 5. {core-count}: GPU core count\n 6. {type}: GPU type\n 7. {dedicated-total}: GPU total dedicated memory\n 8. {dedicated-used}: GPU used dedicated memory\n 9. {shared-total}: GPU total shared memory\n 10. {shared-used}: GPU used shared memory\n 11. {platform-api}: The platform API used when detecting the GPU\n 12. {frequency}: Current frequency in GHz\n 13. {index}: GPU vendor specific index\n 14. {dedicated-percentage-num}: Dedicated memory usage percentage num\n 15. {dedicated-percentage-bar}: Dedicated memory usage percentage bar\n 16. {shared-percentage-num}: Shared memory usage percentage num\n 17. {shared-percentage-bar}: Shared memory usage percentage bar\n 18. {core-usage-num}: Core usage percentage num\n 19. {core-usage-bar}: Core usage percentage bar\n 20. {memory-type}: Memory type (Windows only)\n 21. {pcie-max-speed}: PCIe maximum speed in gen and lanes\n 22. {pcie-curr-speed}: PCIe current speed in gen and lanes", "type": "string" }, "hostFormat": { @@ -446,7 +446,7 @@ "type": "string" }, "packagesFormat": { - "description": "Output format for the `Packages` module. See Wiki for formatting syntax\n 1. {am-system}: Number of am-system packages\n 2. {am-user}: Number of am-user (aka appman) packages\n 3. {appimage}: Number of appimage packages\n 4. {apk}: Number of apk packages\n 5. {brew}: Number of brew packages\n 6. {brew-cask}: Number of brew-cask packages\n 7. {cards}: Number of cards packages\n 8. {choco}: Number of choco packages\n 9. {dpkg}: Number of dpkg packages\n 10. {emerge}: Number of emerge packages\n 11. {eopkg}: Number of eopkg packages\n 12. {flatpak-system}: Number of flatpak-system app packages\n 13. {flatpak-user}: Number of flatpak-user app packages\n 14. {guix-home}: Number of guix-home packages\n 15. {guix-system}: Number of guix-system packages\n 16. {guix-user}: Number of guix-user packages\n 17. {hpkg-system}: Number of hpkg-system packages\n 18. {hpkg-user}: Number of hpkg-user packages\n 19. {kiss}: Number of kiss packages\n 20. {linglong}: Number of linglong packages\n 21. {lpkg}: Number of lpkg packages\n 22. {lpkgbuild}: Number of lpkgbuild packages\n 23. {macports}: Number of macports packages\n 24. {mport}: Number of mport packages\n 25. {moss}: Number of moss packages\n 26. {nix-default}: Number of nix-default packages\n 27. {nix-system}: Number of nix-system packages\n 28. {nix-user}: Number of nix-user packages\n 29. {opkg}: Number of opkg packages\n 30. {pacman}: Number of pacman packages\n 31. {pacman-branch}: Pacman branch on manjaro\n 32. {pacstall}: Number of pacstall packages\n 33. {paludis}: Number of paludis packages\n 34. {pisi}: Number of pisi packages\n 35. {pkg}: Number of pkg packages\n 36. {pkgsrc}: Number of pkgsrc packages\n 37. {pkgtool}: Number of pkgtool packages\n 38. {rpm}: Number of rpm packages\n 39. {scoop-global}: Number of scoop-global packages\n 40. {scoop-user}: Number of scoop-user packages\n 41. {snap}: Number of snap packages\n 42. {soar}: Number of soar packages\n 43. {sorcery}: Number of sorcery packages\n 44. {winget}: Number of winget packages\n 45. {xbps}: Number of xbps packages\n 46. {brew-all}: Total number of all brew packages\n 47. {flatpak-all}: Total number of all flatpak app packages\n 48. {guix-all}: Total number of all guix packages\n 49. {hpkg-all}: Total number of all hpkg packages\n 50. {nix-all}: Total number of all nix packages\n 51. {all}: Number of all packages", + "description": "Output format for the `Packages` module. See Wiki for formatting syntax\n 1. {am-system}: Number of am-system packages\n 2. {am-user}: Number of am-user (aka appman) packages\n 3. {appimage}: Number of appimage packages\n 4. {apk}: Number of apk packages\n 5. {brew}: Number of brew packages\n 6. {brew-cask}: Number of brew-cask packages\n 7. {cards}: Number of cards packages\n 8. {choco}: Number of choco packages\n 9. {dpkg}: Number of dpkg packages\n 10. {emerge}: Number of emerge packages\n 11. {eopkg}: Number of eopkg packages\n 12. {flatpak-system}: Number of flatpak-system app packages\n 13. {flatpak-user}: Number of flatpak-user app packages\n 14. {guix-home}: Number of guix-home packages\n 15. {guix-system}: Number of guix-system packages\n 16. {guix-user}: Number of guix-user packages\n 17. {hpkg-system}: Number of hpkg-system packages\n 18. {hpkg-user}: Number of hpkg-user packages\n 19. {install-release}: Number of install-release packages\n 20. {kiss}: Number of kiss packages\n 21. {linglong}: Number of linglong packages\n 22. {lpkg}: Number of lpkg packages\n 23. {lpkgbuild}: Number of lpkgbuild packages\n 24. {macports}: Number of macports packages\n 25. {mport}: Number of mport packages\n 26. {moss}: Number of moss packages\n 27. {nix-default}: Number of nix-default packages\n 28. {nix-system}: Number of nix-system packages\n 29. {nix-user}: Number of nix-user packages\n 30. {opkg}: Number of opkg packages\n 31. {pacman}: Number of pacman packages\n 32. {pacman-branch}: Pacman branch on manjaro\n 33. {pacstall}: Number of pacstall packages\n 34. {paludis}: Number of paludis packages\n 35. {pisi}: Number of pisi packages\n 36. {pkg}: Number of pkg packages\n 37. {pkgsrc}: Number of pkgsrc packages\n 38. {pkgtool}: Number of pkgtool packages\n 39. {porg}: Number of porg packages\n 40. {rpm}: Number of rpm packages\n 41. {scoop-global}: Number of scoop-global packages\n 42. {scoop-user}: Number of scoop-user packages\n 43. {snap}: Number of snap packages\n 44. {soar}: Number of soar packages\n 45. {sorcery}: Number of sorcery packages\n 46. {winget}: Number of winget packages\n 47. {xbps}: Number of xbps packages\n 48. {brew-all}: Total number of all brew packages\n 49. {flatpak-all}: Total number of all flatpak app packages\n 50. {guix-all}: Total number of all guix packages\n 51. {hpkg-all}: Total number of all hpkg packages\n 52. {nix-all}: Total number of all nix packages\n 53. {all}: Number of all packages", "type": "string" }, "physicaldiskFormat": { diff --git a/src/common/impl/edidHelper.c b/src/common/impl/edidHelper.c index fd7b4035a..4b8f4f84d 100644 --- a/src/common/impl/edidHelper.c +++ b/src/common/impl/edidHelper.c @@ -116,7 +116,7 @@ bool ffEdidGetSerial(const uint8_t edid[128], FFstrbuf* result) { if (int_serial != 0 && int_serial != 0xFFFFFFFF) { ffStrbufSetF(result, "0x%08X", int_serial); - return 0; + return true; } return false; } diff --git a/src/detection/codec/codec_linux.c b/src/detection/codec/codec_linux.c index 10343b061..dc497f660 100644 --- a/src/detection/codec/codec_linux.c +++ b/src/detection/codec/codec_linux.c @@ -306,7 +306,7 @@ static const struct FFCodecVdpauCodec { }; static const char* ffDetectCodecByVdpau(FFCodecOptions* options, FFlist* result) { - if (options->showType != FF_CODEC_SHOW_TYPE_DECODER) { + if (!(options->showType & FF_CODEC_SHOW_TYPE_DECODER)) { return "VDPAU only supports decoding"; } diff --git a/src/detection/cpu/cpu_linux.c b/src/detection/cpu/cpu_linux.c index 6f792c54b..6a617727e 100644 --- a/src/detection/cpu/cpu_linux.c +++ b/src/detection/cpu/cpu_linux.c @@ -778,11 +778,14 @@ static const char* detectPhysicalCores(FFCPUResult* cpu) { ssize_t len = ffReadFileDataRelative(cpuxfd, "topology/physical_package_id", sizeof(buf) - 1, buf); if (len > 0) { buf[len] = '\0'; - unsigned long long id = strtoul(buf, NULL, 10); - if (__builtin_expect(id > 64, false)) { // Do 129-socket boards exist? - pkgHigh |= 1ULL << (id - 64); - } else if (__builtin_expect(id <= 64, true)) { - pkgLow |= 1ULL << id; + unsigned long long id = strtoull(buf, NULL, 10); + if (__builtin_expect(id < 128, true)) { + // Do 129-socket boards exist? + if (__builtin_expect(id >= 64, false)) { + pkgHigh |= 1ULL << (id - 64); + } else { + pkgLow |= 1ULL << id; + } } } diff --git a/src/detection/gpu/gpu.c b/src/detection/gpu/gpu.c index b25a6c6ff..bf6cde9b6 100644 --- a/src/detection/gpu/gpu.c +++ b/src/detection/gpu/gpu.c @@ -188,19 +188,19 @@ const char* detectByEglext(FFlist* result) { if (ffeglQueryDevicesEXT(ARRAY_SIZE(devices), devices, &numDevices) == EGL_TRUE) { FF_DEBUG("eglQueryDevicesEXT() returned %d device(s)", numDevices); for (EGLint i = 0; i < numDevices; i++) { - const EGLDeviceEXT device = &devices[i]; + const EGLDeviceEXT device = devices[i]; if (device == (EGLDeviceEXT) EGL_NO_DEVICE_EXT || device == (EGLDeviceEXT) EGL_BAD_DEVICE_EXT) { FF_DEBUG("eglQueryDevicesEXT() returned invalid device at index %d", i); continue; } - const char* exts = (const char*) ffeglQueryDeviceStringEXT(devices[i], EGL_EXTENSIONS); + const char* exts = (const char*) ffeglQueryDeviceStringEXT(device, EGL_EXTENSIONS); FF_DEBUG("eglQueryDeviceStringEXT() returned extensions for device %d: %s", i, exts); if (exts && ffStrContains(exts, "EGL_MESA_device_software")) { FF_DEBUG("eglQueryDeviceStringEXT() returned software device at index %d, skipping", i); continue; } - const char* name = ffeglQueryDeviceStringEXT(devices[i], EGL_RENDERER_EXT); + const char* name = ffeglQueryDeviceStringEXT(device, EGL_RENDERER_EXT); if (!name) { FF_DEBUG("eglQueryDeviceStringEXT() returned NULL name for device %d, skipping", i); continue; @@ -209,7 +209,7 @@ const char* detectByEglext(FFlist* result) { FFGPUResult* gpu = FF_LIST_ADD(FFGPUResult, *result); ffStrbufInitS(&gpu->name, name); ffStrbufInit(&gpu->vendor); - ffStrbufInitS(&gpu->driver, ffeglQueryDeviceStringEXT(devices[i], EGL_DRIVER_NAME_EXT)); + ffStrbufInitS(&gpu->driver, ffeglQueryDeviceStringEXT(device, EGL_DRIVER_NAME_EXT)); ffStrbufInitF(&gpu->platformApi, "egl-ext"); ffStrbufInit(&gpu->memoryType); gpu->index = FF_GPU_INDEX_UNSET; @@ -222,10 +222,10 @@ const char* detectByEglext(FFlist* result) { gpu->frequency = FF_GPU_FREQUENCY_UNSET; gpu->pcieSpeed = FF_GPU_PCIE_SPEED_UNSET; - ffeglQueryDeviceBinaryEXT(devices[i], EGL_DEVICE_UUID_EXT, sizeof(gpu->deviceId), &gpu->deviceId, NULL); + ffeglQueryDeviceBinaryEXT(device, EGL_DEVICE_UUID_EXT, sizeof(gpu->deviceId), &gpu->deviceId, NULL); if (!normalizeVendorName(gpu)) { - ffStrbufSetS(&gpu->vendor, ffeglQueryDeviceStringEXT(devices[i], EGL_VENDOR)); + ffStrbufSetS(&gpu->vendor, ffeglQueryDeviceStringEXT(device, EGL_VENDOR)); } FF_DEBUG("Detected GPU %d: vendor='%s', name='%s', driver='%s', id='%16" PRIX64 "'", i, gpu->vendor.chars, gpu->name.chars, gpu->driver.chars, gpu->deviceId); @@ -325,7 +325,7 @@ const char* ffDetectGPU(const FFGPUOptions* options, FFlist* result) { } bool ffGPUFillVendorByDeviceName(FFGPUResult* gpu) { - if (gpu->type == FF_GPU_TYPE_UNKNOWN) { + if (gpu->type != FF_GPU_TYPE_UNKNOWN) { return true; } diff --git a/src/detection/gpu/gpu_bsddrm.c b/src/detection/gpu/gpu_bsddrm.c index 6c565cad6..7f3a16a00 100644 --- a/src/detection/gpu/gpu_bsddrm.c +++ b/src/detection/gpu/gpu_bsddrm.c @@ -147,7 +147,7 @@ const char* ffGPUDetectByDrmBSD(const FFGPUOptions* options, FFlist* gpus) { driverName[0] = '\0'; struct drm_version ver = { .name = driverName, - .name_len = ARRAY_SIZE(driverName), + .name_len = ARRAY_SIZE(driverName) - 1, }; if (ioctl(fd, DRM_IOCTL_VERSION, &ver) == 0) { driverName[ver.name_len] = '\0'; diff --git a/src/detection/gpu/gpu_intel.c b/src/detection/gpu/gpu_intel.c index fea111ef4..474f79839 100644 --- a/src/detection/gpu/gpu_intel.c +++ b/src/detection/gpu/gpu_intel.c @@ -246,10 +246,10 @@ const char* ffDetectIntelGpuInfo(const FFGpuDriverCondition* cond, FFGpuDriverRe ctl_pci_state_t pciState = { .Size = sizeof(pciState), .Version = 0 }; if (igclData.ffctlPciGetState(device, &pciState) == CTL_RESULT_SUCCESS) { if (pciState.speed.gen > 0) { - result.psMax->gen = (uint16_t) pciState.speed.gen; + result.psCurr->gen = (uint16_t) pciState.speed.gen; } if (pciState.speed.width > 0) { - result.psMax->lanes = (uint16_t) pciState.speed.width; + result.psCurr->lanes = (uint16_t) pciState.speed.width; } } } diff --git a/src/detection/wifi/wifi_bsd.c b/src/detection/wifi/wifi_bsd.c index 3edeb71ab..4b49b4e56 100644 --- a/src/detection/wifi/wifi_bsd.c +++ b/src/detection/wifi/wifi_bsd.c @@ -146,9 +146,10 @@ const char* ffDetectWifi(FFlist* result) { case 3: ffStrbufSetStatic(&item->conn.security, "WPA1+2"); break; default: ffStrbufSetStatic(&item->conn.security, "WPA"); break; } + } else { + ffStrbufSetStatic(&item->conn.security, "WPA"); } break; - } default: ffStrbufSetF(&item->conn.security, "Unknown (%d)", ireq.i_val); diff --git a/src/modules/monitor/monitor.c b/src/modules/monitor/monitor.c index 86ff1fcdf..636cd447b 100644 --- a/src/modules/monitor/monitor.c +++ b/src/modules/monitor/monitor.c @@ -67,7 +67,7 @@ bool ffPrintMonitor(FFMonitorOptions* options) { })); } - ffStrbufDestroy(&display->name); + // result is a singleton, so we don't destroy the members ++index; }