Skip to content

Commit 6db0475

Browse files
committed
Fix goroutine deadlock for interrupted pager
1 parent f8e0d21 commit 6db0475

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

cmd/root.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,12 @@ func NewRootCmd() *cobra.Command {
7676
jsonOutputMode, _ := cmd.Flags().GetBool("json")
7777

7878
pr, pw := io.Pipe()
79-
errChan := make(chan error, 1)
8079

8180
go func() {
82-
defer close(errChan)
83-
defer pw.Close()
81+
defer func() {
82+
_ = pw.Close()
83+
}()
8484

85-
var err error
8685
if xPathQuery != "" {
8786
err = utils.XPathQuery(reader, pw, xPathQuery, singleNode, options)
8887
} else if cssQuery != "" {
@@ -106,7 +105,10 @@ func NewRootCmd() *cobra.Command {
106105
}
107106
}
108107

109-
errChan <- err
108+
if err != nil {
109+
fmt.Println("Error:", err)
110+
os.Exit(1)
111+
}
110112
}()
111113

112114
if inPlace {
@@ -117,13 +119,11 @@ func NewRootCmd() *cobra.Command {
117119
if err = os.WriteFile(path, content, 0600); err != nil {
118120
return err
119121
}
122+
123+
return nil
120124
} else {
121-
if err := utils.PagerPrint(pr, cmd.OutOrStdout()); err != nil {
122-
return err
123-
}
125+
return utils.PagerPrint(pr, cmd.OutOrStdout())
124126
}
125-
126-
return <-errChan
127127
},
128128
}
129129
}

0 commit comments

Comments
 (0)