OpenPrinting / libppd

Apache License 2.0
2 stars 13 forks source link

Possible typo in ppd/ppd-ipp.c? #36

Closed zdohnal closed 7 months ago

zdohnal commented 7 months ago

The code line here looks like a typo - everything multiplied by zero is zero.

tillkamppeter commented 7 months ago

This piece of code is to determine whether the string items[0] is an integer number or not. First it is checked whether it is not empty and if so, the function strtol() is applied. The * 0 we do as we want to ignore the actual number discovered. This makes the left hand side of the || always false so that we evaluate the right hand side. Here we check whether strtol() errorred and whether it interpreted the whole string as a number. If there is no error and the whole string was interpreted as number, item[0] is considered a number.

      else if (strlen(items[0]) > 0 &&
           ((int)(strtol(items[0], &p, 10) * 0) ||
        (errno == 0 && *p == '\0')))

This is exactly as it was designed. I do not remember to have done this, most probably this code stems froma contributor but it is correct.

Closing ...

tillkamppeter commented 7 months ago

A simpler solution to achieve the same thing is naturally welcome ...

zdohnal commented 7 months ago

Attempt at #38 .