Просмотр исходного кода

fix: FreeBSD build failure due to type mismatch in Statfs_t fields (#2793)

Explicitly cast Blocks, Bavail, and Bfree to uint64 for cross-platform compatibility,
as these fields are int64 on FreeBSD but uint64 on Linux.
CaIon 1 неделя назад
Родитель
Сommit
ff41e65d9b
1 измененных файлов с 5 добавлено и 4 удалено
  1. 5 4
      controller/performance_unix.go

+ 5 - 4
controller/performance_unix.go

@@ -24,10 +24,11 @@ func getDiskSpaceInfo() DiskSpaceInfo {
 		return info
 	}
 
-	// 计算磁盘空间
-	info.Total = stat.Blocks * uint64(stat.Bsize)
-	info.Free = stat.Bavail * uint64(stat.Bsize)
-	info.Used = info.Total - stat.Bfree*uint64(stat.Bsize)
+	// 计算磁盘空间 (显式转换以兼容 FreeBSD,其字段类型为 int64)
+	bsize := uint64(stat.Bsize)
+	info.Total = uint64(stat.Blocks) * bsize
+	info.Free = uint64(stat.Bavail) * bsize
+	info.Used = info.Total - uint64(stat.Bfree)*bsize
 
 	if info.Total > 0 {
 		info.UsedPercent = float64(info.Used) / float64(info.Total) * 100