mirror of
https://github.com/kovidgoyal/kitty.git
synced 2026-08-03 22:25:57 +00:00
Fix the previous fix
Store pending responses since the parser can call HandleDCS multiple times in a single Read()
This commit is contained in:
parent
703068f884
commit
a661f00651
1 changed files with 8 additions and 3 deletions
|
|
@ -45,15 +45,16 @@ func write_many_to_conn(conn *net.Conn, datums ...[]byte) error {
|
|||
}
|
||||
|
||||
type response_reader struct {
|
||||
parser wcswidth.EscapeCodeParser
|
||||
storage [utils.DEFAULT_IO_BUFFER_SIZE]byte
|
||||
parser wcswidth.EscapeCodeParser
|
||||
storage [utils.DEFAULT_IO_BUFFER_SIZE]byte
|
||||
pending_responses []string
|
||||
}
|
||||
|
||||
func (r *response_reader) read_response_from_conn(conn *net.Conn, timeout time.Duration) (serialized_response []byte, err error) {
|
||||
keep_going := true
|
||||
r.parser.HandleDCS = func(data []byte) error {
|
||||
if bytes.HasPrefix(data, []byte("@kitty-cmd")) {
|
||||
serialized_response = data[len("@kitty-cmd"):]
|
||||
r.pending_responses = append(r.pending_responses, string(data[len("@kitty-cmd"):]))
|
||||
keep_going = false
|
||||
}
|
||||
return nil
|
||||
|
|
@ -69,6 +70,10 @@ func (r *response_reader) read_response_from_conn(conn *net.Conn, timeout time.D
|
|||
}
|
||||
r.parser.Parse(buf[:n])
|
||||
}
|
||||
if len(r.pending_responses) > 0 {
|
||||
serialized_response = utils.UnsafeStringToBytes(r.pending_responses[0])
|
||||
r.pending_responses = r.pending_responses[1:]
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue