[Lazarus] IsAccel bug?

Mattias Gaertner nc-gaertnma at netcologne.de
Thu Nov 17 14:54:22 CET 2011


 


Hans-Peter Diettrich <DrDiettrich1 at aol.com> hat am 17. November 2011 um 09:33
geschrieben:

> In forms.IsAccel I suspect an bug, which manifests in very rare cases only:
>
>    position := UTF8Pos(AmpersandChar, ACaption);
> This is the position of the &
>
> ...
>
>        UTF8Delete(ACaption, 1, position+1);
>
> This IMO removes the character *after* the ampersand 
Yes, which is another ampersand (&&). So it deletes both ampersands. 
 
 

>, so that>
>        position := UTF8Pos(AmpersandChar, ACaption);
>
> finds the same & over and over again, while it should find the next one. 
Have you tested it? It looks correct to me. 
 
 

>
>
> Now for some questionable constructs:
>
> A simple Pos would be sufficient, because '&' is an ASCII character. 
Yes. The whole UTF8 in there unneeded, except for the comparison of the one
character with the VK. 
 

>
> It would be sufficient to replace the found '&' by something else, in place.
>
> Or a loop until the last char could be used, which eliminates any string
> time and memory consuming string manipulation. 
Feel free to provide a patch.
 
 
Mattias
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20111117/44516b53/attachment-0003.html>


More information about the Lazarus mailing list