overlay.el bug, incompatable overlays-in

FKtPp m_pupil at yahoo.com.cn
Wed Feb 27 04:22:57 EST 2008


Hi Stephen,

As you can see, I am not very good at english, so I will rewrite all
the docstring as you suggested.

BTW, some additional reponses inline....

Thanks
FKtPp

--- "Stephen J. Turnbull" <stephen at xemacs.org> wrote:

> It's me FKtPp ;) writes:
> 
>  > +(defsubst overlay-validate-begin-end-buffer ()
> 
> I prefer the name "overlay-normalize-begin-end-buffer".  Validate is
> OK, but for example in XML processing a "validating process" will
> give
> a fatal error on invalid XML; it won't fix it up.
> 

Well, thanks for your suggestion. I'll change it to normalize...

>  > +  "validte the value of BEG, END and BUFFER
>  > +
>  > +If BUFFER is nil, set to current buffer.  If BEG is
>  > +greater than END, exchange their value.  If either
>  > +BEG or END is out of buffer boundary, set their
>  > +value to corresponding boundary-value."
> 
>   "Normalize the BEG, END, and BUFFER arguments.
> 
> BUFFER must be a buffer or nil, meaning the current buffer.
> BEG and END must be integers.  They are sorted and truncated to
> values
> legal in BUFFER so that 1 <= BEG <= END <= \(1+ \(length BUFFER))."
> 
>  > +  (if (null buffer)
>  > +      (setq buffer (current-buffer))
>  > +    (check-argument-type 'bufferp buffer))
> 
>  > +  (when (> beg end)
>  > +    (setq beg (prog1 end (setq end beg))))
>  > +
>  > +  (setq beg (max beg 1)
>  > +	end (min end (1+ (buffer-size))))
>  > +  t)
> 
> I would write these as
> 
>   (when (< beg 1)
>     (setq beg 1))
>   (when (> end (1+ (buffer-size buffer)))
>     (setq end (1+ (buffer-size buffer))))


I use #'min and #'max is because I find the docstring saying that BEG
and END could be a marker. I don't know if #'< or #'> can handle the
comparation of a marker with a integer, but #'min and #'max announced
they could in their docstring.

And beside this, I find another possiable way of get into error of
"args out of range". If some bad guy or buggy program set both BEG and
END < 1 or > (1+ (buffer-size)), boom!! I will change the code to avoid
this...

suggestions are welcome :P



      ____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs



More information about the XEmacs-Patches mailing list