Hi all,

I have done further investigation into SF#390 on the sf390 branch
<https://github.com/PDLPorters/pdl/pull/128>.

I rewrote the BadCode PP code in `ops.pd` specifically for comparison
operators (==, >, <, etc.) since, with the previous code, the semantics
for what to do when only one of the values is bad is unclear under the
per-PDL badvalues configuration.

The bug is now fixed in builds that use the BADVAL_PER_PDL option
<https://travis-ci.org/PDLPorters/pdl/builds/69517571>.

In order to fix it for the other badval options, I need some input. I
currently check the following in a switch[^1]

    switch( ( ($ISBAD(a())) << 1 ) | ($ISBAD(b())) )

in order to handle all the cases where each operand might be bad.

Would checking the badflag of each operand as well make sense? The line
would then become:

    switch(   ( (   $ISBAD(a()) & $ISPDLSTATEBAD(a())   ) << 1 )
            | ( (   $ISBAD(b()) & $ISPDLSTATEBAD(b())   )      ) )

so that I would check both the badflag and the badvalue for each
operand. I just want to make sure I'm understanding the semantics
correctly.

Cheers,
- Zaki

[^1]: 
<https://github.com/PDLPorters/pdl/pull/128/files#diff-621e73c99459a6921891a9de81d5818aR106>

P.S. Exciting news! I think I may have found a way to test on Windows
automatically just like Travis-CI. I'd like to start that after the
split.

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
pdl-devel mailing list
pdl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pdl-devel

Reply via email to