Patch 7.3.344

17 views
Skip to first unread message

Bram Moolenaar

unread,
Oct 20, 2011, 3:28:13 PM10/20/11
to vim...@googlegroups.com

Patch 7.3.344
Problem: Problem with GUI startup related to XInitThreads.
Solution: Use read() and write() instead of fputs() and fread(). (James
Vega)
Files: src/gui.c


*** ../vim-7.3.343/src/gui.c 2011-09-14 19:04:35.000000000 +0200
--- src/gui.c 2011-10-20 21:23:43.000000000 +0200
***************
*** 212,218 ****
int status;
int exit_status;
pid_t pid = -1;
- FILE *parent_file;

/* Setup a pipe between the child and the parent, so that the parent
* knows when the child has done the setsid() call and is allowed to
--- 212,217 ----
***************
*** 290,308 ****
gui_mch_forked();
# endif

- if (!pipe_error)
- parent_file = fdopen(pipefd[1], "w");
- else
- parent_file = NULL;
-
/* Try to start the GUI */
gui_attempt_start();

/* Notify the parent */
! if (parent_file != NULL)
{
! fputs(gui.in_use ? "ok" : "fail", parent_file);
! fclose(parent_file);
}

/* If we failed to start the GUI, exit now. */
--- 289,305 ----
gui_mch_forked();
# endif

/* Try to start the GUI */
gui_attempt_start();

/* Notify the parent */
! if (!pipe_error)
{
! if (gui.in_use)
! write_eintr(pipefd[1], "ok", 3);
! else
! write_eintr(pipefd[1], "fail", 5);
! close(pipefd[1]);
}

/* If we failed to start the GUI, exit now. */
***************
*** 323,339 ****
static int
gui_read_child_pipe(int fd)
{
! size_t bytes_read;
! FILE *file;
! char buffer[10];
!
! file = fdopen(fd, "r");
! if (!file)
return GUI_CHILD_IO_ERROR;
!
! bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file);
! buffer[bytes_read] = '\0';
! fclose(file);
if (strcmp(buffer, "ok") == 0)
return GUI_CHILD_OK;
return GUI_CHILD_FAILED;
--- 320,335 ----
static int
gui_read_child_pipe(int fd)
{
! long bytes_read;
! #define READ_BUFFER_SIZE 10
! char buffer[READ_BUFFER_SIZE];
!
! bytes_read = read_eintr(fd, buffer, READ_BUFFER_SIZE - 1);
! #undef READ_BUFFER_SIZE
! close(fd);
! if (bytes_read < 0)
return GUI_CHILD_IO_ERROR;
! buffer[bytes_read] = NUL;
if (strcmp(buffer, "ok") == 0)
return GUI_CHILD_OK;
return GUI_CHILD_FAILED;
*** ../vim-7.3.343/src/version.c 2011-10-20 21:09:25.000000000 +0200
--- src/version.c 2011-10-20 21:27:31.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
{ /* Add new patch number below this line */
+ /**/
+ 344,
/**/

--
From "know your smileys":
*<|:-) Santa Claus (Ho Ho Ho)

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

Reply all
Reply to author
Forward
0 new messages