diff -pr emacs-20.2/src/syntax.h emacs-20.2.my/src/syntax.h
*** emacs-20.2/src/syntax.h	Mon Sep  8 20:42:16 1997
--- emacs-20.2.my/src/syntax.h	Sat Jan 17 17:06:34 1998
*************** extern char syntax_code_spec[16];
*** 199,220 ****
     currently good for a position before POS.  */
  
  #define UPDATE_SYNTAX_TABLE_FORWARD(pos)		\
!   ((pos) >= gl_state.e_property - gl_state.offset	\
     ? (update_syntax_table ((pos) + gl_state.offset, 1, 0, Qnil), 1) : 0)
  
  /* Make syntax table state (gl_state) good for POS, assuming it is
     currently good for a position after POS.  */
  
  #define UPDATE_SYNTAX_TABLE_BACKWARD(pos)		\
!   ((pos) <= gl_state.b_property - gl_state.offset	\
     ? (update_syntax_table ((pos) + gl_state.offset, -1, 0, Qnil), 1) : 0)
  
  /* Make syntax table good for POS.  */
  
  #define UPDATE_SYNTAX_TABLE(pos)					\
!   ((pos) <= gl_state.b_property - gl_state.offset			\
     ? (update_syntax_table ((pos) + gl_state.offset, -1, 0, Qnil), 1)	\
!    : ((pos) >= gl_state.e_property - gl_state.offset			\
        ? (update_syntax_table ((pos) + gl_state.offset, 1, 0, Qnil), 1) : 0))
  
  /* This macro should be called with FROM at the start of forward
--- 199,220 ----
     currently good for a position before POS.  */
  
  #define UPDATE_SYNTAX_TABLE_FORWARD(pos)		\
!   ((pos) >= gl_state.e_property				\
     ? (update_syntax_table ((pos) + gl_state.offset, 1, 0, Qnil), 1) : 0)
  
  /* Make syntax table state (gl_state) good for POS, assuming it is
     currently good for a position after POS.  */
  
  #define UPDATE_SYNTAX_TABLE_BACKWARD(pos)		\
!   ((pos) <= gl_state.b_property				\
     ? (update_syntax_table ((pos) + gl_state.offset, -1, 0, Qnil), 1) : 0)
  
  /* Make syntax table good for POS.  */
  
  #define UPDATE_SYNTAX_TABLE(pos)					\
!   ((pos) <= gl_state.b_property						\
     ? (update_syntax_table ((pos) + gl_state.offset, -1, 0, Qnil), 1)	\
!    : ((pos) >= gl_state.e_property					\
        ? (update_syntax_table ((pos) + gl_state.offset, 1, 0, Qnil), 1) : 0))
  
  /* This macro should be called with FROM at the start of forward
*************** extern char syntax_code_spec[16];
*** 245,252 ****
  #define SETUP_SYNTAX_TABLE_FOR_OBJECT(object, from, count)		\
    if (BUFFERP (object) || NILP (object))				\
      {									\
!       gl_state.b_property = BEGV - 1;					\
!       gl_state.e_property = ZV;						\
        gl_state.offset = BEGV - 1;					\
      }									\
    else if (EQ (object, Qt))						\
--- 245,252 ----
  #define SETUP_SYNTAX_TABLE_FOR_OBJECT(object, from, count)		\
    if (BUFFERP (object) || NILP (object))				\
      {									\
!       gl_state.b_property = 0;						\
!       gl_state.e_property = ZV - BEGV + 1;				\
        gl_state.offset = BEGV - 1;					\
      }									\
    else if (EQ (object, Qt))						\
*************** extern char syntax_code_spec[16];
*** 264,270 ****
    gl_state.use_global = 0;						\
    gl_state.current_syntax_table = current_buffer->syntax_table;		\
    if (parse_sexp_lookup_properties) 					\
!       update_syntax_table (count > 0 ? (from) : (from) - 1, count, 1, object);
  
  struct gl_state_s
  {
--- 264,272 ----
    gl_state.use_global = 0;						\
    gl_state.current_syntax_table = current_buffer->syntax_table;		\
    if (parse_sexp_lookup_properties) 					\
!       update_syntax_table (((from) + gl_state.offset			\
! 			    + (count > 0 ? 0 :  -1)),			\
! 			   count, 1, object);
  
  struct gl_state_s
  {
diff -pr emacs-20.2/src/textprop.c emacs-20.2.my/src/textprop.c
*** emacs-20.2/src/textprop.c	Sat Jul 12 02:30:26 1997
--- emacs-20.2.my/src/textprop.c	Sat Jan 17 17:14:43 1998
*************** interval_of (position, object)
*** 492,497 ****
--- 492,499 ----
  
    if (NILP (object))
      XSETBUFFER (object, current_buffer);
+   else if (EQ (object, Qt))
+     return NULL_INTERVAL;
  
    CHECK_STRING_OR_BUFFER (object, 0);
  
*** emacs-20.2/src/syntax.c.pre	Thu Jul 24 03:01:31 1997
--- emacs-20.2/src/syntax.c	Fri Jan 30 17:50:06 1998
*************** update_syntax_table (pos, count, init, o
*** 122,129 ****
        invalidate = 0;
        if (NULL_INTERVAL_P (i))
  	return;
!       gl_state.b_property = i->position - 1;
!       gl_state.e_property = INTERVAL_LAST_POS (i);
        goto update;
      }
    oldi = i = count > 0 ? gl_state.forward_i : gl_state.backward_i;
--- 122,129 ----
        invalidate = 0;
        if (NULL_INTERVAL_P (i))
  	return;
!       gl_state.b_property = i->position - 1 - gl_state.offset;
!       gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
        goto update;
      }
    oldi = i = count > 0 ? gl_state.forward_i : gl_state.backward_i;
*************** update_syntax_table (pos, count, init, o
*** 142,148 ****
  	  invalidate = 0;
  	  gl_state.right_ok = 1;	/* Invalidate the other end.  */
  	  gl_state.forward_i = i;
! 	  gl_state.e_property = INTERVAL_LAST_POS (i);
  	}
      } 
    else if (pos >= INTERVAL_LAST_POS (i)) /* Move right.  */
--- 142,148 ----
  	  invalidate = 0;
  	  gl_state.right_ok = 1;	/* Invalidate the other end.  */
  	  gl_state.forward_i = i;
! 	  gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
  	}
      } 
    else if (pos >= INTERVAL_LAST_POS (i)) /* Move right.  */
*************** update_syntax_table (pos, count, init, o
*** 156,162 ****
  	  invalidate = 0;
  	  gl_state.left_ok = 1;		/* Invalidate the other end.  */
  	  gl_state.backward_i = i;
! 	  gl_state.b_property = i->position - 1;
  	}
      }
    else if (count > 0 ? gl_state.right_ok : gl_state.left_ok)
--- 156,162 ----
  	  invalidate = 0;
  	  gl_state.left_ok = 1;		/* Invalidate the other end.  */
  	  gl_state.backward_i = i;
! 	  gl_state.b_property = i->position - 1 - gl_state.offset;
  	}
      }
    else if (count > 0 ? gl_state.right_ok : gl_state.left_ok)
*************** update_syntax_table (pos, count, init, o
*** 178,190 ****
  	{
  	  gl_state.backward_i = i;
  	  gl_state.left_ok = 1;		/* Invalidate the other end.  */
! 	  gl_state.b_property = i->position - 1;
  	} 
        else 
  	{
  	  gl_state.forward_i = i;	
  	  gl_state.right_ok = 1;	/* Invalidate the other end.  */
! 	  gl_state.e_property = INTERVAL_LAST_POS (i);
  	}
      }
  
--- 178,190 ----
  	{
  	  gl_state.backward_i = i;
  	  gl_state.left_ok = 1;		/* Invalidate the other end.  */
! 	  gl_state.b_property = i->position - 1 - gl_state.offset;
  	} 
        else 
  	{
  	  gl_state.forward_i = i;	
  	  gl_state.right_ok = 1;	/* Invalidate the other end.  */
! 	  gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
  	}
      }
  
*************** update_syntax_table (pos, count, init, o
*** 237,248 ****
      {
        if (count > 0) 
  	{
! 	  gl_state.e_property = i->position;
  	  gl_state.forward_i = i;
  	}
        else 
  	{
! 	  gl_state.b_property = i->position + LENGTH (i) - 1;
  	  gl_state.backward_i = i;
  	}
      }    
--- 237,248 ----
      {
        if (count > 0) 
  	{
! 	  gl_state.e_property = i->position - gl_state.offset;
  	  gl_state.forward_i = i;
  	}
        else 
  	{
! 	  gl_state.b_property = i->position + LENGTH (i) - 1 - gl_state.offset;
  	  gl_state.backward_i = i;
  	}
      }    
*************** skip_chars (forwardp, syntaxp, string, l
*** 1267,1287 ****
  	  {
  	    if (multibyte)
  	      {
! 		while (pos < XINT (lim)
! 		       && fastmap[(int) SYNTAX (FETCH_CHAR (pos))])
! 		  {
! 		    INC_POS (pos);
! 		    UPDATE_SYNTAX_TABLE_FORWARD (pos);
! 		  }
  	      }
  	    else
  	      {
! 		while (pos < XINT (lim)
! 		       && fastmap[(int) SYNTAX (FETCH_BYTE (pos))])
! 		  {
! 		    pos++;
! 		    UPDATE_SYNTAX_TABLE_FORWARD (pos);
! 		  }
  	      }
  	  }
  	else
--- 1267,1291 ----
  	  {
  	    if (multibyte)
  	      {
! 		if (pos < XINT (lim))
! 		  while (fastmap[(int) SYNTAX (FETCH_CHAR (pos))])
! 		    {
! 		      INC_POS (pos);
! 		      if (pos >= XINT (lim))
! 		    	break;
! 		      UPDATE_SYNTAX_TABLE_FORWARD (pos);
! 		    }
  	      }
  	    else
  	      {
! 		if (pos < XINT (lim))
! 		  while (fastmap[(int) SYNTAX (FETCH_BYTE (pos))])
! 		    {
! 		      pos++;
! 		      if (pos >= XINT (lim))
! 		    	break;
! 		      UPDATE_SYNTAX_TABLE_FORWARD (pos);
! 		    }
  	      }
  	  }
  	else
*************** skip_chars (forwardp, syntaxp, string, l
*** 1302,1317 ****
  	      }
  	    else
  	      {
! 		while (pos > XINT (lim))
! 		  {
! 		    pos--;
! 		    UPDATE_SYNTAX_TABLE_BACKWARD (pos);
! 		    if (!fastmap[(int) SYNTAX (FETCH_BYTE (pos))])
! 		      {
! 			pos++;
  			break;
! 		      }
! 		  }
  	      }
  	  }
        }
--- 1306,1319 ----
  	      }
  	    else
  	      {
! 		if (pos > XINT (lim))
! 		  while (fastmap[(int) SYNTAX (FETCH_BYTE (pos - 1))])
! 		    {
! 		      pos--;
! 		      if (pos <= XINT (lim))
  			break;
! 		      UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
! 		    }
  	      }
  	  }
        }
*************** scan_lists (from, count, depth, sexpflag
*** 1854,1860 ****
  		    /* we have encountered a comment end of the same style
  		       as the comment sequence which began this comment
  		       section */
! 		    break;
  		  INC_POS (from);
  		  if (from < stop && SYNTAX_COMEND_FIRST (c)
  		      && SYNTAX_COMEND_SECOND (FETCH_CHAR (from))
--- 1856,1862 ----
  		    /* we have encountered a comment end of the same style
  		       as the comment sequence which began this comment
  		       section */
! 		    { INC_POS (from); break; }
  		  INC_POS (from);
  		  if (from < stop && SYNTAX_COMEND_FIRST (c)
  		      && SYNTAX_COMEND_SECOND (FETCH_CHAR (from))