Fix data race

pull/3769/head
Junegunn Choi 4 weeks ago
parent 2d1bcb8e21
commit dbb5974977
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627

@ -517,6 +517,7 @@ type previewRequest struct {
pwindowSize tui.TermSize pwindowSize tui.TermSize
scrollOffset int scrollOffset int
list []*Item list []*Item
env []string
} }
type previewResult struct { type previewResult struct {
@ -3003,6 +3004,7 @@ func (t *Terminal) Loop() error {
var commandTemplate string var commandTemplate string
var pwindow tui.Window var pwindow tui.Window
var pwindowSize tui.TermSize var pwindowSize tui.TermSize
var env []string
initialOffset := 0 initialOffset := 0
t.previewBox.Wait(func(events *util.Events) { t.previewBox.Wait(func(events *util.Events) {
for req, value := range *events { for req, value := range *events {
@ -3017,6 +3019,7 @@ func (t *Terminal) Loop() error {
items = request.list items = request.list
pwindow = request.pwindow pwindow = request.pwindow
pwindowSize = request.pwindowSize pwindowSize = request.pwindowSize
env = request.env
} }
} }
events.Clear() events.Clear()
@ -3030,7 +3033,6 @@ func (t *Terminal) Loop() error {
_, query := t.Input() _, query := t.Input()
command := t.replacePlaceholder(commandTemplate, false, string(query), items) command := t.replacePlaceholder(commandTemplate, false, string(query), items)
cmd := t.executor.ExecCommand(command, true) cmd := t.executor.ExecCommand(command, true)
env := t.environ()
if pwindowSize.Lines > 0 { if pwindowSize.Lines > 0 {
lines := fmt.Sprintf("LINES=%d", pwindowSize.Lines) lines := fmt.Sprintf("LINES=%d", pwindowSize.Lines)
columns := fmt.Sprintf("COLUMNS=%d", pwindowSize.Columns) columns := fmt.Sprintf("COLUMNS=%d", pwindowSize.Columns)
@ -3168,7 +3170,7 @@ func (t *Terminal) Loop() error {
if len(command) > 0 && t.canPreview() { if len(command) > 0 && t.canPreview() {
_, list := t.buildPlusList(command, false) _, list := t.buildPlusList(command, false)
t.cancelPreview() t.cancelPreview()
t.previewBox.Set(reqPreviewEnqueue, previewRequest{command, t.pwindow, t.pwindowSize(), t.evaluateScrollOffset(), list}) t.previewBox.Set(reqPreviewEnqueue, previewRequest{command, t.pwindow, t.pwindowSize(), t.evaluateScrollOffset(), list, t.environ()})
} }
} }
@ -3497,7 +3499,7 @@ func (t *Terminal) Loop() error {
if valid { if valid {
t.cancelPreview() t.cancelPreview()
t.previewBox.Set(reqPreviewEnqueue, t.previewBox.Set(reqPreviewEnqueue,
previewRequest{t.previewOpts.command, t.pwindow, t.pwindowSize(), t.evaluateScrollOffset(), list}) previewRequest{t.previewOpts.command, t.pwindow, t.pwindowSize(), t.evaluateScrollOffset(), list, t.environ()})
} }
} else { } else {
// Discard the preview content so that it won't accidentally appear // Discard the preview content so that it won't accidentally appear

Loading…
Cancel
Save