@@ -27,13 +27,28 @@ func collect() (*SystemInfo, error) {
2727 defer C .free (unsafe .Pointer (cInfo .productName ))
2828 defer C .free (unsafe .Pointer (cInfo .serialNumber ))
2929
30+ // Safely convert C strings to Go strings, handling NULL pointers
31+ var modelNumber , serialNumber , modelName , identifier string
32+ if cInfo .modelNumber != nil {
33+ modelNumber = C .GoString (cInfo .modelNumber )
34+ }
35+ if cInfo .serialNumber != nil {
36+ serialNumber = C .GoString (cInfo .serialNumber )
37+ }
38+ if cInfo .productName != nil {
39+ modelName = C .GoString (cInfo .productName )
40+ }
41+ if cInfo .modelIdentifier != nil {
42+ identifier = C .GoString (cInfo .modelIdentifier )
43+ }
44+
3045 return & SystemInfo {
3146 Manufacturer : "Apple Inc." ,
32- ModelNumber : C . GoString ( cInfo . modelNumber ) ,
33- SerialNumber : C . GoString ( cInfo . serialNumber ) ,
34- ModelName : C . GoString ( cInfo . productName ) ,
35- ChassisType : getChassisType (C . GoString ( cInfo . productName ), C . GoString ( cInfo . modelIdentifier ) ),
36- Identifier : C . GoString ( cInfo . modelIdentifier ) ,
47+ ModelNumber : modelNumber ,
48+ SerialNumber : serialNumber ,
49+ ModelName : modelName ,
50+ ChassisType : getChassisType (modelName , identifier ),
51+ Identifier : identifier ,
3752 }, nil
3853}
3954
0 commit comments