aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2025-01-26 22:15:49 -0800
committerPaul Eggert2025-01-26 23:05:52 -0800
commita1e4f6a35c70cf265c77b445288f4e0ab6ffc19f (patch)
tree0886688e6bc313526e0f447e943ff567adc3cf8c
parent6ff06ff738ead96d7b4cb59eda15a1c72e2b5776 (diff)
downloademacs-a1e4f6a35c70cf265c77b445288f4e0ab6ffc19f.tar.gz
emacs-a1e4f6a35c70cf265c77b445288f4e0ab6ffc19f.zip
Avoid unlikely int overflow.
* src/pgtkterm.c (pgtk_term_init): * src/xterm.c (x_term_init): Use a bool, not an int that keeps incrementing, to record whether initialization has occurred.
-rw-r--r--src/pgtkterm.c8
-rw-r--r--src/xterm.c7
2 files changed, 8 insertions, 7 deletions
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index 30679353c1b..41bec344799 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -7004,7 +7004,7 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
7004 GdkDisplay *dpy; 7004 GdkDisplay *dpy;
7005 struct terminal *terminal; 7005 struct terminal *terminal;
7006 struct pgtk_display_info *dpyinfo; 7006 struct pgtk_display_info *dpyinfo;
7007 static int x_initialized = 0; 7007 static bool x_initialized;
7008 static unsigned x_display_id = 0; 7008 static unsigned x_display_id = 0;
7009 static char *initial_display = NULL; 7009 static char *initial_display = NULL;
7010 char *dpy_name; 7010 char *dpy_name;
@@ -7015,6 +7015,7 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
7015 7015
7016 block_input (); 7016 block_input ();
7017 7017
7018 bool was_initialized = x_initialized;
7018 if (!x_initialized) 7019 if (!x_initialized)
7019 { 7020 {
7020 any_help_event_p = false; 7021 any_help_event_p = false;
@@ -7025,8 +7026,7 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
7025#ifdef USE_CAIRO 7026#ifdef USE_CAIRO
7026 gui_init_fringe (&pgtk_redisplay_interface); 7027 gui_init_fringe (&pgtk_redisplay_interface);
7027#endif 7028#endif
7028 7029 x_initialized = true;
7029 ++x_initialized;
7030 } 7030 }
7031 7031
7032 dpy_name = SSDATA (display_name); 7032 dpy_name = SSDATA (display_name);
@@ -7041,7 +7041,7 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name)
7041 char **argv2 = argv; 7041 char **argv2 = argv;
7042 guint id; 7042 guint id;
7043 7043
7044 if (x_initialized++ > 1) 7044 if (was_initialized)
7045 { 7045 {
7046 xg_display_open (dpy_name, &dpy); 7046 xg_display_open (dpy_name, &dpy);
7047 } 7047 }
diff --git a/src/xterm.c b/src/xterm.c
index 21968b38e78..00c61c486ed 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -30382,7 +30382,7 @@ static bool x_timeout_atimer_activated_flag;
30382 30382
30383#endif /* USE_X_TOOLKIT */ 30383#endif /* USE_X_TOOLKIT */
30384 30384
30385static int x_initialized; 30385static bool x_initialized;
30386 30386
30387/* Test whether two display-name strings agree up to the dot that separates 30387/* Test whether two display-name strings agree up to the dot that separates
30388 the screen number from the server number. */ 30388 the screen number from the server number. */
@@ -30594,10 +30594,11 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
30594 30594
30595 block_input (); 30595 block_input ();
30596 30596
30597 bool was_initialized = x_initialized;
30597 if (!x_initialized) 30598 if (!x_initialized)
30598 { 30599 {
30599 x_initialize (); 30600 x_initialize ();
30600 ++x_initialized; 30601 x_initialized = true;
30601 } 30602 }
30602 30603
30603#if defined USE_X_TOOLKIT || defined USE_GTK 30604#if defined USE_X_TOOLKIT || defined USE_GTK
@@ -30615,7 +30616,7 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
30615 char **argv2 = argv; 30616 char **argv2 = argv;
30616 guint id; 30617 guint id;
30617 30618
30618 if (x_initialized++ > 1) 30619 if (was_initialized)
30619 { 30620 {
30620 xg_display_open (SSDATA (display_name), &dpy); 30621 xg_display_open (SSDATA (display_name), &dpy);
30621 } 30622 }