)]}'
{"metropolis/pkg/smbios/smbios.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ff3cff9c690a49ebadcb2d4fdf8f5debd7c61b11","unresolved":true,"context_lines":[{"line_number":61,"context_line":"\t\tvar structHdr structureHeader"},{"line_number":62,"context_line":"\t\tif err :\u003d binary.Read(table, binary.LittleEndian, \u0026structHdr); err !\u003d nil {"},{"line_number":63,"context_line":"\t\t\tif err \u003d\u003d io.EOF {"},{"line_number":64,"context_line":"\t\t\t\t// Be tolerant of EOFs on structure boundaries even though"},{"line_number":65,"context_line":"\t\t\t\t// the EOT marker is specified as a type 127 structure."},{"line_number":66,"context_line":"\t\t\t\tbreak"},{"line_number":67,"context_line":"\t\t\t}"},{"line_number":68,"context_line":"\t\t\treturn nil, fmt.Errorf(\"unable to read structure header: %w\", err)"}],"source_content_type":"text/x-go","patch_set":2,"id":"731efdf8_cd558f37","line":65,"range":{"start_line":64,"start_character":4,"end_line":65,"end_character":59},"updated":"2022-11-23 10:43:43.000000000","message":"Can we somehow detect that the EOF is right before the structure vs. within the structure? I\u0027m a bit apprehensive about truncated files being accepted without error.","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"fdc987a8d0404d5e0ea6a0959472dff268ca3c82","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\t\tvar structHdr structureHeader"},{"line_number":62,"context_line":"\t\tif err :\u003d binary.Read(table, binary.LittleEndian, \u0026structHdr); err !\u003d nil {"},{"line_number":63,"context_line":"\t\t\tif err \u003d\u003d io.EOF {"},{"line_number":64,"context_line":"\t\t\t\t// Be tolerant of EOFs on structure boundaries even though"},{"line_number":65,"context_line":"\t\t\t\t// the EOT marker is specified as a type 127 structure."},{"line_number":66,"context_line":"\t\t\t\tbreak"},{"line_number":67,"context_line":"\t\t\t}"},{"line_number":68,"context_line":"\t\t\treturn nil, fmt.Errorf(\"unable to read structure header: %w\", err)"}],"source_content_type":"text/x-go","patch_set":2,"id":"865fe805_306d2c81","line":65,"range":{"start_line":64,"start_character":4,"end_line":65,"end_character":59},"in_reply_to":"731efdf8_cd558f37","updated":"2022-11-23 11:52:00.000000000","message":"Luckily binary.Read does this for us.\n\u003e The error is EOF only if no bytes were read. If an EOF happens after reading some but not all the bytes, Read returns ErrUnexpectedEOF.","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ff3cff9c690a49ebadcb2d4fdf8f5debd7c61b11","unresolved":true,"context_lines":[{"line_number":167,"context_line":"// version, the smbios_min_vers struct tag needs to be put on the first field"},{"line_number":168,"context_line":"// of a newer structure version. The version implicitly starts with 2.0."},{"line_number":169,"context_line":"// The version determined is written to the second target struct field."},{"line_number":170,"context_line":"// Fields which do not have a fixed need to be typed as a slice and tagged with"},{"line_number":171,"context_line":"// smbios_repeat set to the name of the field containing the count. The count"},{"line_number":172,"context_line":"// field itself needs to be some width of uint."},{"line_number":173,"context_line":"func UnmarshalStructureRaw(rawStruct Structure, target any) error {"}],"source_content_type":"text/x-go","patch_set":2,"id":"52100124_e12f1a30","line":170,"range":{"start_line":170,"start_character":30,"end_line":170,"end_character":35},"updated":"2022-11-23 10:43:43.000000000","message":"fixed size","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"fdc987a8d0404d5e0ea6a0959472dff268ca3c82","unresolved":false,"context_lines":[{"line_number":167,"context_line":"// version, the smbios_min_vers struct tag needs to be put on the first field"},{"line_number":168,"context_line":"// of a newer structure version. The version implicitly starts with 2.0."},{"line_number":169,"context_line":"// The version determined is written to the second target struct field."},{"line_number":170,"context_line":"// Fields which do not have a fixed need to be typed as a slice and tagged with"},{"line_number":171,"context_line":"// smbios_repeat set to the name of the field containing the count. The count"},{"line_number":172,"context_line":"// field itself needs to be some width of uint."},{"line_number":173,"context_line":"func UnmarshalStructureRaw(rawStruct Structure, target any) error {"}],"source_content_type":"text/x-go","patch_set":2,"id":"54188e5a_70e7c163","line":170,"range":{"start_line":170,"start_character":30,"end_line":170,"end_character":35},"in_reply_to":"52100124_e12f1a30","updated":"2022-11-23 11:52:00.000000000","message":"Done","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ff3cff9c690a49ebadcb2d4fdf8f5debd7c61b11","unresolved":true,"context_lines":[{"line_number":188,"context_line":"fieldLoop:"},{"line_number":189,"context_line":"\tfor i :\u003d 2; i \u003c numFields; i++ {"},{"line_number":190,"context_line":"\t\tfieldType :\u003d v.Type().Field(i)"},{"line_number":191,"context_line":"\t\tminVerRaw :\u003d fieldType.Tag.Get(\"smbios_min_ver\")"},{"line_number":192,"context_line":"\t\tif minVerRaw !\u003d \"\" {"},{"line_number":193,"context_line":"\t\t\tvar ver Version"},{"line_number":194,"context_line":"\t\t\tif _, err :\u003d fmt.Sscanf(minVerRaw, \"%d.%d\", \u0026ver.Major, \u0026ver.Minor); err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":2,"id":"d88a708a_89755652","line":191,"range":{"start_line":191,"start_character":2,"end_line":191,"end_character":50},"updated":"2022-11-23 10:43:43.000000000","message":"nit: if min :\u003d fieldType.Tag.Get(\"smbios_min_ver\"); min !\u003d \"\" {\n\nSame for repeat at line 202.","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"fdc987a8d0404d5e0ea6a0959472dff268ca3c82","unresolved":false,"context_lines":[{"line_number":188,"context_line":"fieldLoop:"},{"line_number":189,"context_line":"\tfor i :\u003d 2; i \u003c numFields; i++ {"},{"line_number":190,"context_line":"\t\tfieldType :\u003d v.Type().Field(i)"},{"line_number":191,"context_line":"\t\tminVerRaw :\u003d fieldType.Tag.Get(\"smbios_min_ver\")"},{"line_number":192,"context_line":"\t\tif minVerRaw !\u003d \"\" {"},{"line_number":193,"context_line":"\t\t\tvar ver Version"},{"line_number":194,"context_line":"\t\t\tif _, err :\u003d fmt.Sscanf(minVerRaw, \"%d.%d\", \u0026ver.Major, \u0026ver.Minor); err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":2,"id":"539dfa95_62dd72b9","line":191,"range":{"start_line":191,"start_character":2,"end_line":191,"end_character":50},"in_reply_to":"d88a708a_89755652","updated":"2022-11-23 11:52:00.000000000","message":"Done","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ff3cff9c690a49ebadcb2d4fdf8f5debd7c61b11","unresolved":true,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"\t\trepeat :\u003d fieldType.Tag.Get(\"smbios_repeat\")"},{"line_number":203,"context_line":"\t\tif repeat !\u003d \"\" {"},{"line_number":204,"context_line":"\t\t\trepeatCountField :\u003d v.FieldByName(repeat)"},{"line_number":205,"context_line":"\t\t\tif !repeatCountField.IsValid() {"},{"line_number":206,"context_line":"\t\t\t\tpanic(fmt.Sprintf(\"invalid smbios_repeat tag in %v: no such field %q\", fieldType.Name, repeat))"},{"line_number":207,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"aa4ae0c4_69495665","line":204,"range":{"start_line":204,"start_character":3,"end_line":204,"end_character":44},"updated":"2022-11-23 10:43:43.000000000","message":"Should we check that the repeat count field has already been parsed?","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"fdc987a8d0404d5e0ea6a0959472dff268ca3c82","unresolved":true,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"\t\trepeat :\u003d fieldType.Tag.Get(\"smbios_repeat\")"},{"line_number":203,"context_line":"\t\tif repeat !\u003d \"\" {"},{"line_number":204,"context_line":"\t\t\trepeatCountField :\u003d v.FieldByName(repeat)"},{"line_number":205,"context_line":"\t\t\tif !repeatCountField.IsValid() {"},{"line_number":206,"context_line":"\t\t\t\tpanic(fmt.Sprintf(\"invalid smbios_repeat tag in %v: no such field %q\", fieldType.Name, repeat))"},{"line_number":207,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"bedad310_5656ed89","line":204,"range":{"start_line":204,"start_character":3,"end_line":204,"end_character":44},"in_reply_to":"aa4ae0c4_69495665","updated":"2022-11-23 11:52:00.000000000","message":"I thought about this, sadly it\u0027s nontrivial. reflect.FieldByName does not get us access to the field index, meaning we\u0027d need to keep around an entire auxiliary map just to keep track of it. Therefore I originally decided against it.","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0ab37867e135bf30b76f4e1b75b209e06836173a","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"\t\trepeat :\u003d fieldType.Tag.Get(\"smbios_repeat\")"},{"line_number":203,"context_line":"\t\tif repeat !\u003d \"\" {"},{"line_number":204,"context_line":"\t\t\trepeatCountField :\u003d v.FieldByName(repeat)"},{"line_number":205,"context_line":"\t\t\tif !repeatCountField.IsValid() {"},{"line_number":206,"context_line":"\t\t\t\tpanic(fmt.Sprintf(\"invalid smbios_repeat tag in %v: no such field %q\", fieldType.Name, repeat))"},{"line_number":207,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"59b214f9_b3bcf249","line":204,"range":{"start_line":204,"start_character":3,"end_line":204,"end_character":44},"in_reply_to":"bedad310_5656ed89","updated":"2022-11-23 11:54:25.000000000","message":"Ack","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ff3cff9c690a49ebadcb2d4fdf8f5debd7c61b11","unresolved":true,"context_lines":[{"line_number":218,"context_line":"\t\t\tf.Set(reflect.MakeSlice(f.Type(), repeatCount, repeatCount))"},{"line_number":219,"context_line":"\t\t\tfor j :\u003d 0; j \u003c repeatCount; j++ {"},{"line_number":220,"context_line":"\t\t\t\tfs :\u003d f.Index(j)"},{"line_number":221,"context_line":"\t\t\t\tif fs.Kind() \u003d\u003d reflect.String {"},{"line_number":222,"context_line":"\t\t\t\t\tvar stringTableIdx uint8"},{"line_number":223,"context_line":"\t\t\t\t\terr :\u003d binary.Read(r, binary.LittleEndian, \u0026stringTableIdx)"},{"line_number":224,"context_line":"\t\t\t\t\tif errors.Is(err, io.EOF) {"}],"source_content_type":"text/x-go","patch_set":2,"id":"63d70a92_646c1e07","line":221,"range":{"start_line":221,"start_character":0,"end_line":221,"end_character":36},"updated":"2022-11-23 10:43:43.000000000","message":"I would try to factor this out and share with the non-repeat field implementation below. That might also clean up the hairy breaks/continues.","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"fdc987a8d0404d5e0ea6a0959472dff268ca3c82","unresolved":false,"context_lines":[{"line_number":218,"context_line":"\t\t\tf.Set(reflect.MakeSlice(f.Type(), repeatCount, repeatCount))"},{"line_number":219,"context_line":"\t\t\tfor j :\u003d 0; j \u003c repeatCount; j++ {"},{"line_number":220,"context_line":"\t\t\t\tfs :\u003d f.Index(j)"},{"line_number":221,"context_line":"\t\t\t\tif fs.Kind() \u003d\u003d reflect.String {"},{"line_number":222,"context_line":"\t\t\t\t\tvar stringTableIdx uint8"},{"line_number":223,"context_line":"\t\t\t\t\terr :\u003d binary.Read(r, binary.LittleEndian, \u0026stringTableIdx)"},{"line_number":224,"context_line":"\t\t\t\t\tif errors.Is(err, io.EOF) {"}],"source_content_type":"text/x-go","patch_set":2,"id":"bb95e7b2_7b3315d1","line":221,"range":{"start_line":221,"start_character":0,"end_line":221,"end_character":36},"in_reply_to":"63d70a92_646c1e07","updated":"2022-11-23 11:52:00.000000000","message":"Done","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ff3cff9c690a49ebadcb2d4fdf8f5debd7c61b11","unresolved":true,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"\t\tif f.Kind() \u003d\u003d reflect.String {"},{"line_number":246,"context_line":"\t\t\tvar stringTableIdx uint8"},{"line_number":247,"context_line":"\t\t\terr :\u003d binary.Read(r, binary.LittleEndian, \u0026stringTableIdx)"},{"line_number":248,"context_line":"\t\t\tif errors.Is(err, io.EOF) {"},{"line_number":249,"context_line":"\t\t\t\thasAborted \u003d true"},{"line_number":250,"context_line":"\t\t\t\tbreak"}],"source_content_type":"text/x-go","patch_set":2,"id":"7e4dd44d_cd1e8f90","line":247,"range":{"start_line":247,"start_character":3,"end_line":247,"end_character":6},"updated":"2022-11-23 10:43:43.000000000","message":"Missing handling of non-EOF cases. If we don\u0027t expect any other error than EOF here (because this is a bytes.Reader) we might as well just check for err !\u003d nil instead of an explicit io.EOF check.","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"fdc987a8d0404d5e0ea6a0959472dff268ca3c82","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"\t\tif f.Kind() \u003d\u003d reflect.String {"},{"line_number":246,"context_line":"\t\t\tvar stringTableIdx uint8"},{"line_number":247,"context_line":"\t\t\terr :\u003d binary.Read(r, binary.LittleEndian, \u0026stringTableIdx)"},{"line_number":248,"context_line":"\t\t\tif errors.Is(err, io.EOF) {"},{"line_number":249,"context_line":"\t\t\t\thasAborted \u003d true"},{"line_number":250,"context_line":"\t\t\t\tbreak"}],"source_content_type":"text/x-go","patch_set":2,"id":"cdd3dad5_4f055839","line":247,"range":{"start_line":247,"start_character":3,"end_line":247,"end_character":6},"in_reply_to":"7e4dd44d_cd1e8f90","updated":"2022-11-23 11:52:00.000000000","message":"Done","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0ab37867e135bf30b76f4e1b75b209e06836173a","unresolved":true,"context_lines":[{"line_number":247,"context_line":"\treturn nil"},{"line_number":248,"context_line":"}"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"func unmarshalField(rawStruct Structure, field reflect.Value, r *bytes.Reader) error {"},{"line_number":251,"context_line":"\tif field.Kind() \u003d\u003d reflect.String {"},{"line_number":252,"context_line":"\t\tvar stringTableIdx uint8"},{"line_number":253,"context_line":"\t\terr :\u003d binary.Read(r, binary.LittleEndian, \u0026stringTableIdx)"}],"source_content_type":"text/x-go","patch_set":3,"id":"bc667a9d_44e8add0","line":250,"range":{"start_line":250,"start_character":30,"end_line":250,"end_character":39},"updated":"2022-11-23 11:54:25.000000000","message":"Pass this as a pointer to avoid copies?","commit_id":"add5cfb9c6fdbc20c978928d4c3e9e6044325547"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"c98fa8491812824e0997eb76b969722299c868d8","unresolved":false,"context_lines":[{"line_number":247,"context_line":"\treturn nil"},{"line_number":248,"context_line":"}"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"func unmarshalField(rawStruct Structure, field reflect.Value, r *bytes.Reader) error {"},{"line_number":251,"context_line":"\tif field.Kind() \u003d\u003d reflect.String {"},{"line_number":252,"context_line":"\t\tvar stringTableIdx uint8"},{"line_number":253,"context_line":"\t\terr :\u003d binary.Read(r, binary.LittleEndian, \u0026stringTableIdx)"}],"source_content_type":"text/x-go","patch_set":3,"id":"e61b1d32_7e3e8d51","line":250,"range":{"start_line":250,"start_character":30,"end_line":250,"end_character":39},"in_reply_to":"bc667a9d_44e8add0","updated":"2022-11-23 12:03:55.000000000","message":"Done","commit_id":"add5cfb9c6fdbc20c978928d4c3e9e6044325547"}],"metropolis/pkg/smbios/structures.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ff3cff9c690a49ebadcb2d4fdf8f5debd7c61b11","unresolved":true,"context_lines":[{"line_number":55,"context_line":"// VersionAtLeast returns true if the version of the structure is at least"},{"line_number":56,"context_line":"// the given version, i.e. the fields covered by it and all previous versions"},{"line_number":57,"context_line":"// are valid."},{"line_number":58,"context_line":"func (rb *BIOSInformationRaw) VersionAtLeast(major, minor uint8) bool {"},{"line_number":59,"context_line":"\treturn rb.StructureVersion.Major \u003e\u003d major \u0026\u0026 rb.StructureVersion.Minor \u003e\u003d minor"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-go","patch_set":2,"id":"9cb481d9_52c94c8c","line":58,"range":{"start_line":58,"start_character":30,"end_line":58,"end_character":44},"updated":"2022-11-23 10:43:43.000000000","message":"How about we define this on Version instead?","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"fdc987a8d0404d5e0ea6a0959472dff268ca3c82","unresolved":false,"context_lines":[{"line_number":55,"context_line":"// VersionAtLeast returns true if the version of the structure is at least"},{"line_number":56,"context_line":"// the given version, i.e. the fields covered by it and all previous versions"},{"line_number":57,"context_line":"// are valid."},{"line_number":58,"context_line":"func (rb *BIOSInformationRaw) VersionAtLeast(major, minor uint8) bool {"},{"line_number":59,"context_line":"\treturn rb.StructureVersion.Major \u003e\u003d major \u0026\u0026 rb.StructureVersion.Minor \u003e\u003d minor"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-go","patch_set":2,"id":"4dedb6e9_df0d8f5d","line":58,"range":{"start_line":58,"start_character":30,"end_line":58,"end_character":44},"in_reply_to":"9cb481d9_52c94c8c","updated":"2022-11-23 11:52:00.000000000","message":"Done","commit_id":"ce181900cd5fae644ba7fdb215285ba76d817ae5"}]}
