changeset 61407:88c04d73f43d

(PRINTPREPARE): Check if the marker PRINTCHARFUN is within the accessible part of the buffer.
author Lute Kamstra <lute@gnu.org>
date Sat, 09 Apr 2005 08:42:30 +0000
parents a2d3e29d8373
children 8cfd32d71cf4
files src/print.c
diffstat 1 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/print.c	Fri Apr 08 23:46:58 2005 +0000
+++ b/src/print.c	Sat Apr 09 08:42:30 2005 +0000
@@ -1,6 +1,6 @@
 /* Lisp object printing and output streams.
-   Copyright (C) 1985, 86, 88, 93, 94, 95, 97, 98, 1999, 2000, 01, 03, 2004
-	Free Software Foundation, Inc.
+   Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
+     2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -211,13 +211,17 @@
      }									\
    if (MARKERP (printcharfun))						\
      {									\
-       if (!(XMARKER (original)->buffer))				\
+       EMACS_INT marker_pos;						\
+       if (!(XMARKER (printcharfun)->buffer))				\
          error ("Marker does not point anywhere");			\
-       if (XMARKER (original)->buffer != current_buffer)		\
-         set_buffer_internal (XMARKER (original)->buffer);		\
+       if (XMARKER (printcharfun)->buffer != current_buffer)		\
+         set_buffer_internal (XMARKER (printcharfun)->buffer);		\
+       marker_pos = marker_position (printcharfun);			\
+       if (marker_pos < BEGV || marker_pos > ZV)			\
+	 error ("Marker is outside the accessible part of the buffer"); \
        old_point = PT;							\
        old_point_byte = PT_BYTE;					\
-       SET_PT_BOTH (marker_position (printcharfun),			\
+       SET_PT_BOTH (marker_pos,						\
 		    marker_byte_position (printcharfun));		\
        start_point = PT;						\
        start_point_byte = PT_BYTE;					\