diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2012-04-01 18:42:57 +0200 |
---|---|---|
committer | Andreas Schwab <schwab@linux-m68k.org> | 2012-04-01 18:42:57 +0200 |
commit | 3b0512a3d5c5ef30308bc466d914c4282153d453 (patch) | |
tree | b6e6f894162a478fe41036880c707dac4e03b93d /src | |
parent | d6ec6cb42b6f4ee90aa2237bb8f4f465ffd1f5b7 (diff) |
Fixes: debbugs:11141
* w32menu.c (is_simple_dialog): Properly check lisp types.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/w32menu.c | 16 |
2 files changed, 17 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 9be289c42b..ee54c48cd9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-04-01 Andreas Schwab <schwab@linux-m68k.org> + + * w32menu.c (is_simple_dialog): Properly check lisp types. + (Bug#11141) + 2012-03-31 Eli Zaretskii <eliz@gnu.org> * xdisp.c (move_it_by_lines): When DVPOS is positive, and the diff --git a/src/w32menu.c b/src/w32menu.c index b5cc6801a7..b25edf0f26 100644 --- a/src/w32menu.c +++ b/src/w32menu.c @@ -1173,18 +1173,23 @@ w32_dialog_show (FRAME_PTR f, int keymaps, static int is_simple_dialog (Lisp_Object contents) { - Lisp_Object options = XCDR (contents); + Lisp_Object options; Lisp_Object name, yes, no, other; + if (!CONSP (contents)) + return 0; + options = XCDR (contents); + yes = build_string ("Yes"); no = build_string ("No"); if (!CONSP (options)) return 0; - name = XCAR (XCAR (options)); - if (!CONSP (options)) + name = XCAR (options); + if (!CONSP (name)) return 0; + name = XCAR (name); if (!NILP (Fstring_equal (name, yes))) other = no; @@ -1197,7 +1202,10 @@ is_simple_dialog (Lisp_Object contents) if (!CONSP (options)) return 0; - name = XCAR (XCAR (options)); + name = XCAR (options); + if (!CONSP (name)) + return 0; + name = XCAR (name); if (NILP (Fstring_equal (name, other))) return 0; |