diff --git a/internal/winapi/class.go b/internal/winapi/class.go index 4a26deb..ef82147 100644 --- a/internal/winapi/class.go +++ b/internal/winapi/class.go @@ -14,8 +14,9 @@ func ClassFromImagePath(p string) string { if i := strings.LastIndexAny(p, `\/`); i >= 0 { p = p[i+1:] } - if len(p) >= 4 && strings.EqualFold(p[len(p)-4:], ".exe") { - p = p[:len(p)-4] + const exeSuffix = ".exe" + if len(p) >= len(exeSuffix) && strings.EqualFold(p[len(p)-len(exeSuffix):], exeSuffix) { + p = p[:len(p)-len(exeSuffix)] } return strings.ToLower(p) } diff --git a/internal/winapi/class_test.go b/internal/winapi/class_test.go index a1d9a4b..d28f5ef 100644 --- a/internal/winapi/class_test.go +++ b/internal/winapi/class_test.go @@ -12,6 +12,7 @@ func TestClassFromImagePath(t *testing.T) { {`C:/forward/slash/Code.exe`, "code"}, {`firefox`, "firefox"}, {``, ""}, + {`.exe`, ""}, // degenerate: only the extension } for _, c := range cases { if got := ClassFromImagePath(c.in); got != c.want {