Nasty filter bug
Brian Milby
brian at milby7.com
Wed Jan 24 14:53:08 EST 2024
Your test misses the actual issue:
on mouseup
local tStr
local tFilter
put "a*b" into tFilter
put "anything bold" into tStr
filter tStr with tFilter
put tStr
end mouseup
Will yield "anything bold"
while using the following 2 lines:
put "a?b" into tFilter
put "a*b" into tStr
will yield "a*b"
Finally, using the following 2 lines:
put "a[?]b" into tFilter
put "a?b" into tStr
will yield "a?b"
The point is that you can end up with issues if you are counting on "*" and
"?" to filter literally. They don't - they are wildcards and can match
anything (multiple char or single char respectively). The "[" is also
special.
To ensure that your filters work properly if you do not want to use any
wildcards (i.e. match * and ? literally) would require you to change *, ?,
and [ to [*], [?], and [[].
On Wed, Jan 24, 2024 at 1:19 PM Craig Newman via use-livecode <
use-livecode at lists.runrev.com> wrote:
> OK, instead of working I did this:
>
> on mouseUp
>
> repeat with y = 1 to 255
>
> put "XX" & numToChar(y) & "XX" into temp
>
> filter temp without temp
>
> if temp <> "" then put y & return after accum
>
> end repeat
>
> answer accum
>
> end mouseUp
>
> There are two characters that prevent the filter command from doing its
> job: ASCII 91 (“[“) and ASCII 10, the return char.
>
>
>
> Craig
>
>
> > On Jan 24, 2024, at 12:51 PM, Craig Newman via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> >
> > Brian.
> >
> > Nope. Those two chars pass through the filter, er, filtered.
> >
> > Again, I did not test the entire character set.
> >
> > Craig
> >
> >> On Jan 24, 2024, at 11:05 AM, Brian Milby via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> >>
> >> The only other two that would cause issues are ? and * which are single
> and multiple char wildcards respectively.
> >>
> >> Brian Milby
> >> brian at milby7.com
> >>
> >>> On Jan 24, 2024, at 10:21 AM, Craig Newman via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> >>>
> >>> I did not test the ASCII set exhaustively, but the culprit is the
> char “[“ (ASCII 91). Any other char (including “]”) in the string works
> correctly, that is, nothing is left after the filter command executes.
> >>>
> >>> I do not know enough to say whether that particular char does
> something to the filter command, which may use regex somehow in its inner
> workings.
> >>>
> >>> Craig
> >>>
> >>> Craig
> >>>
> >>>> On Jan 23, 2024, at 9:45 PM, Brian Milby via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> >>>>
> >>>> Not sure this is really a bug. The default is to match a
> wildcardPattern. If you want to match [ then you must use [[] in the
> pattern.
> >>>>
> >>>> Brian Milby
> >>>> brian at milby7.com
> >>>>
> >>>>>> On Jan 23, 2024, at 9:02 PM, Neville Smythe via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> >>>>>
> >>>>> Try this in the msg box:
> >>>>>
> >>>>> put "aaa[bbb" into tStr; put line 1 of tStr into tLine; filter tStr
> without tLine; put tStr
> >>>>> I get (using MacOS, LC 9.6.11)
> >>>>>
> >>>>> aaa[bbb
> >>>>>
> >>>>> That is to say, the line is not filtered out.
> >>>>>
> >>>>> And:
> >>>>>
> >>>>> put "aaa[bbb" into tStr; filter tStr with tStr; put tStr
> >>>>>
> >>>>> produces an empty string instead of the original string.
> >>>>>
> >>>>> The bug occurs if the line contains the character “[“ anywhere; any
> lines containing that character are ignored by both filter with and filter
> without.
> >>>>>
> >>>>> This is really serious, because I rely on the filter command a lot,
> as I would think do many other developers!
> >>>>>
> >>>>> Don’t know if it occurs with other characters, but I have never seen
> it before. I discovered it when filtering lines with regular expressions.
> Other special regexp characters I have tested do not trigger the bug.
> >>>>>
> >>>>> Neville Smythe
> >>>>>
> >>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> use-livecode mailing list
> >>>>> use-livecode at lists.runrev.com
> >>>>> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> >>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
> >>>>
> >>>> _______________________________________________
> >>>> use-livecode mailing list
> >>>> use-livecode at lists.runrev.com
> >>>> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> >>>> http://lists.runrev.com/mailman/listinfo/use-livecode
> >>>
> >>>
> >>> _______________________________________________
> >>> use-livecode mailing list
> >>> use-livecode at lists.runrev.com
> >>> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> >>> http://lists.runrev.com/mailman/listinfo/use-livecode
> >>
> >> _______________________________________________
> >> use-livecode mailing list
> >> use-livecode at lists.runrev.com
> >> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> >> http://lists.runrev.com/mailman/listinfo/use-livecode
> >
> >
> > _______________________________________________
> > use-livecode mailing list
> > use-livecode at lists.runrev.com
> > Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> > http://lists.runrev.com/mailman/listinfo/use-livecode
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
More information about the use-livecode
mailing list