[ic] Bug in "EITHER" coretag

Peter peter at pajamian.dhs.org
Fri Mar 9 17:42:00 EST 2007



On 03/09/2007 11:26 AM, Stefan Hornburg wrote:
> Carl Bailey wrote:
>> We found what we believe to be a fault in the [either] coretag.
>>
>> We used the following code on a page:
>>    [either][cgi idxnum][or]0[/either]
>> When the cgi value is absent this tag returns nothing -- a null
>> string, rather than the desired '0' character.
>>
>> The reason for this is that the either coretag splits its body on
>> "[or]" and interpolates each chunk in turn, removes leading and
>> trailing spaces from the result and returns the first "true" result. 
>> However in determining what to return, it uses the statement "return
>> $result if $result;"  Obviously when $result = '0', this fails to
>> return anything.  
> 
> Therefore the last statement in the tag should be:
> 
> return $result if $result =~ /\S/;

So what if the first result is "0"?  it would still return it.

And I don't think this addresses the problem that was originally stated
either.

return $result if $result is the right way to do it, but there needs to
be a way to return the last result in the loop if all tests fail.

Peter



More information about the interchange-users mailing list