Fix the MSDOS build when running under CWSDPMI

* src/msdos.c (the_only_tty_output): Define.
* src/msdos.h (the_only_tty_output): Declare.
* src/frame.c (make_terminal_frame) [MSDOS]:
* src/dispnew.c (init_display) [MSDOS]: Set up
f->output_data.tty pointer using the_only_tty_output, before
dereferencing the pointer.  This prevents crashes with DPMI
servers that provide NULL pointer protection.
This commit is contained in:
Eli Zaretskii 2019-04-15 18:05:52 +03:00
parent 7a608fc6f3
commit 70ec392866
4 changed files with 6 additions and 0 deletions

View file

@ -6117,6 +6117,7 @@ init_display (void)
t->reference_count++;
#ifdef MSDOS
f->output_data.tty = &the_only_tty_output;
f->output_data.tty->display_info = &the_only_display_info;
#else
if (f->output_method == output_termcap)

View file

@ -1117,6 +1117,7 @@ make_terminal_frame (struct terminal *terminal)
f->terminal = terminal;
f->terminal->reference_count++;
#ifdef MSDOS
f->output_data.tty = &the_only_tty_output;
f->output_data.tty->display_info = &the_only_display_info;
if (!inhibit_window_system
&& (!FRAMEP (selected_frame) || !FRAME_LIVE_P (XFRAME (selected_frame))

View file

@ -420,6 +420,9 @@ static unsigned short outside_cursor;
/* The only display since MS-DOS does not support multiple ones. */
struct tty_display_info the_only_display_info;
/* The only tty_output, since MS-DOS supports only 1 display. */
struct tty_output the_only_tty_output;
/* Support for DOS/V (allows Japanese characters to be displayed on
standard, non-Japanese, ATs). Only supported for DJGPP v2 and later. */

View file

@ -93,6 +93,7 @@ typedef int XRectangle;
typedef struct tty_display_info Display_Info;
extern struct tty_display_info the_only_display_info;
extern struct tty_output the_only_tty_output;
#define FRAME_X_DISPLAY(f) ((Display *) 0)
#define FRAME_FONT(f) ((f)->output_data.tty->font)