changeset 23932:08e1d4876918

(Fcharset_after): Check range. If POS is out of range, return nil.
author Kenichi Handa <handa@m17n.org>
date Tue, 22 Dec 1998 06:06:48 +0000
parents 5fea9ce6601a
children d993b7332153
files src/charset.c
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/charset.c	Tue Dec 22 06:06:48 1998 +0000
+++ b/src/charset.c	Tue Dec 22 06:06:48 1998 +0000
@@ -1006,7 +1006,8 @@
 
 DEFUN ("charset-after", Fcharset_after, Scharset_after, 0, 1, 0,
   "Return charset of a character in current buffer at position POS.\n\
-If POS is nil, it defauls to the current point.")
+If POS is nil, it defauls to the current point.\n\
+If POS is out of range, the value is nil.")
   (pos)
      Lisp_Object pos;
 {
@@ -1016,10 +1017,16 @@
   if (NILP (pos))
     pos_byte = PT_BYTE;
   else if (MARKERP (pos))
-    pos_byte = marker_byte_position (pos);
+    {
+      pos_byte = marker_byte_position (pos);
+      if (pos_byte < BEGV_BYTE || pos_byte >= ZV_BYTE)
+	return Qnil;
+    }
   else
     {
       CHECK_NUMBER (pos, 0);
+      if (XINT (pos) < BEGV || XINT (pos) >= ZV)
+	return Qnil;
       pos_byte = CHAR_TO_BYTE (XINT (pos));
     }
   p = BYTE_POS_ADDR (pos_byte);