{"record":{"id":"0ea7172c57dcca1c","repo":"kovidgoyal/kitty","slug":"invalid-size-specification-s-with-error-w","errorCode":null,"errorMessage":"Invalid size specification: %s with error: %w","messagePattern":"Invalid size specification: (.+?) with error: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"kittens/icat/main.go","lineNumber":200,"sourceCode":"\t\t} else {\n\t\t\tt, oerr := tty.OpenControllingTerm()\n\t\t\tif oerr != nil {\n\t\t\t\treturn 1, fmt.Errorf(\"Failed to open controlling terminal with error: %w\", oerr)\n\t\t\t}\n\t\t\tscreen_size, err = t.GetSize()\n\t\t}\n\t\tif err != nil {\n\t\t\treturn 1, fmt.Errorf(\"Failed to query terminal using TIOCGWINSZ with error: %w\", err)\n\t\t}\n\t} else {\n\t\tparts := strings.SplitN(opts.UseWindowSize, \",\", 4)\n\t\tif len(parts) != 4 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s\", opts.UseWindowSize)\n\t\t}\n\t\tscreen_size = &unix.Winsize{}\n\t\tvar t uint64\n\t\tif t, err = strconv.ParseUint(parts[0], 10, 16); err != nil || t < 1 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s with error: %w\", opts.UseWindowSize, err)\n\t\t}\n\t\tscreen_size.Col = uint16(t)\n\t\tif t, err = strconv.ParseUint(parts[1], 10, 16); err != nil || t < 1 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s with error: %w\", opts.UseWindowSize, err)\n\t\t}\n\t\tscreen_size.Row = uint16(t)\n\t\tif t, err = strconv.ParseUint(parts[2], 10, 16); err != nil || t < 1 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s with error: %w\", opts.UseWindowSize, err)\n\t\t}\n\t\tscreen_size.Xpixel = uint16(t)\n\t\tif t, err = strconv.ParseUint(parts[3], 10, 16); err != nil || t < 1 {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s with error: %w\", opts.UseWindowSize, err)\n\t\t}\n\t\tscreen_size.Ypixel = uint16(t)\n\t\tif screen_size.Xpixel < screen_size.Col {\n\t\t\treturn 1, fmt.Errorf(\"Invalid size specification: %s with error: The pixel width is smaller than the number of columns\", opts.UseWindowSize)\n\t\t}\n\t\tif screen_size.Ypixel < screen_size.Row {","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kittens/icat/main.go#L182-L218","documentation":"Parsing the first field (terminal columns) of --use-window-size as a base-10 uint16 failed or was zero. icat requires each of the four numbers to parse cleanly and be >= 1.","triggerScenarios":"--use-window-size where parts[0] is non-numeric (e.g. 'abc'), negative, > 65535, or 0, e.g. --use-window-size=0,24,1920,1080.","commonSituations":"Placeholder/uninitialized 0 values in scripts; passing fractional sizes; passing pixel values in the columns slot; note err may be nil when the value parsed but was < 1.","solutions":["Use a positive integer <= 65535 for the columns field","Ensure it is a column count (e.g. 80), not pixels","Validate the string with a regex like ^[1-9][0-9]{0,4}$ before invoking"],"exampleFix":"// before\n--use-window-size=0,24,1920,1080\n// after\n--use-window-size=80,24,1920,1080","handlingStrategy":"validation","validationCode":"parts := strings.Split(spec, \",\")\nif n, err := strconv.ParseUint(parts[0], 10, 16); err != nil || n < 1 { log.Fatal(\"bad columns\") }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate each field parses as uint16 and >= 1","Never pass 0 for columns"],"tags":["kitty","icat","parsing","window-size"],"backgroundTag":"invalid-cli-argument","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}