Avoid altering global states on ParseOptions

pull/3769/head
Junegunn Choi 1 month ago
parent 21910968cd
commit d09d4bebf3
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627

@ -28,6 +28,10 @@ func sbytes(data string) []byte {
// Run starts fzf // Run starts fzf
func Run(opts *Options) (int, error) { func Run(opts *Options) (int, error) {
if err := postProcessOptions(opts); err != nil {
return ExitError, err
}
defer clearCaches() defer clearCaches()
defer util.RunAtExitFuncs() defer util.RunAtExitFuncs()

@ -2458,6 +2458,8 @@ func validateSign(sign string, signOptName string) error {
return nil return nil
} }
// This function can have side-effects and alter some global states.
// So we run it on fzf.Run and not on ParseOptions.
func postProcessOptions(opts *Options) error { func postProcessOptions(opts *Options) error {
if opts.Ambidouble { if opts.Ambidouble {
uniseg.EastAsianAmbiguousWidth = 2 uniseg.EastAsianAmbiguousWidth = 2
@ -2471,7 +2473,7 @@ func postProcessOptions(opts *Options) error {
return err return err
} }
if !opts.Version && !tui.IsLightRendererSupported() && opts.Height.size > 0 { if !tui.IsLightRendererSupported() && opts.Height.size > 0 {
return errors.New("--height option is currently not supported on this platform") return errors.New("--height option is currently not supported on this platform")
} }
@ -2621,7 +2623,5 @@ func ParseOptions(useDefaults bool, args []string) (*Options, error) {
return nil, errors.New("failed to start pprof profiles: " + err.Error()) return nil, errors.New("failed to start pprof profiles: " + err.Error())
} }
err := postProcessOptions(opts) return opts, nil
return opts, err
} }

Loading…
Cancel
Save