Open tv42 opened 9 years ago
man execve says Both argv and envp must be terminated by a NULL pointer.. With the current code, that does not happen, and this can be observed with strace -ff -e execve ./myterminal.
Both argv and envp must be terminated by a NULL pointer.
strace -ff -e execve ./myterminal
diff --git i/vte.go w/vte.go index 4f972e5..5009acd 100644 --- i/vte.go +++ w/vte.go @@ -85,12 +85,13 @@ func (v *Terminal) Feed(m string) { } func (v *Terminal) Fork(args []string) { - cargs := C.make_strings(C.int(len(args))) + cargs := C.make_strings(C.int(len(args) + 1)) for i, j := range args { ptr := C.CString(j) defer C.free(unsafe.Pointer(ptr)) C.set_string(cargs, C.int(i), ptr) } + C.set_string(cargs, C.int(len(args)), nil) C.vte_terminal_fork_command_full(v.Native(), C.VTE_PTY_DEFAULT, nil,
Thanks for the issue, will get this updated along with some go-gtk fixs this weekend.
man execve says
Both argv and envp must be terminated by a NULL pointer.
. With the current code, that does not happen, and this can be observed withstrace -ff -e execve ./myterminal
.