Actually the logic truncates the data which exceeded the buffer. If the honor limit is set and the size exceeded, the EDIT_MakeFit will return TRUE. The following code after the EDIT_MakeFit will try to take limit to the buffer size.

+       /* Only replace or insert that many characters that can fit into the
+       edit control. Do this only if honor_limit is TRUE */
+       if(honor_limit && strl > es->buffer_limit)
+               strl = es->buffer_limit - (tl - (e-s));
 
Krishna

-----Original Message-----
From: Alexandre Julliard [mailto:julliard@winehq.org]
Sent: Thursday, May 27, 2004 2:30 PM
To: Krishna Murthy
Cc: wine-devel@winehq.org
Subject: Re: FW: Edit Paste operation does not behave same as MS Windows

Krishna Murthy <Krishna.Murthy@guptaworldwide.com> writes:

> - Change log Entry:
> EDIT_MakeFit should return TRUE when the honor_limit is set and paste
> buffer exceeds the limit. Also EDIT_EM_ReplaceSel should compute size
> which could fit in the edit control by truncating the extra characters
> to behave similar to MS Windows paste operation.

You are bypassing the reallocation of the buffer when the limit is exceeded, but still adding the data to the buffer. I don't think this will work right.

--
Alexandre Julliard
julliard@winehq.org