Subject: Re: bug#13743: 24.2.93; Segmentation fault when trying to [s]teal a file opened elsewhere

From: Eli Zaretskii <[email-masked]>
Date: Sat, 23 Feb 2013 20:44:06 +0200

> From: Stefan Monnier <[email-masked]>
> Cc: Dmitry Gutov <[email-masked]>,  [email-masked]
> Date: Sat, 23 Feb 2013 11:59:18 -0500
> 
> > I can fix this particular problem with this simple patch:
> [...]
> > However, I'm not sure this is the right or the best way.  If it is, it
> > will probably be prudent to add some protection against infinite
> > recursion here.
> 
> How 'bout moving the
> 
>    if (BUFFERP (object))
>      modify_region (object, start, end);
> 
> earlier in the function.  Something like the patch below.

This will (falsely, AFAIU) tell us that the region is about to be
modified when we return at the point marked below:

  /* If we're not starting on an interval boundary, we have to
    split this interval.  */
  if (i->position != s)
    {
      /* If this interval already has the properties, we can
         skip it.  */
      if (interval_has_all_properties (properties, i))
	{
	  ptrdiff_t got = (LENGTH (i) - (s - i->position));
	  if (got >= len)
	    RETURN_UNGCPRO (Qnil); <<<<<<<<<<<<<<<<<<<<<<<<<<<
	  len -= got;
	  i = next_interval (i);
	}
      else