RvB Smilies Bug Found RvB Smilies Released!

Syntax Bug, or Program Bug?

Filed in: PHP Add comments

So, while coding today I came across a very strange bug in PHP. It seems as though subtracting two arrays will return null.

However, if I wrap that in the floor() function, it works as expected.

Go figure. Took me 30 minutes to find that annoying bug.

6 Responses to “Syntax Bug, or Program Bug?”

  1. Falcon4 Says:

    Have you tried a simple test program to make sure you’re just not making too complicated a program?

    105);
    $foo2 = array(’two’=>159);
    echo ‘$foo1[\'one\'] is ‘.$foo1['one'].”;
    echo ‘$foo2[\'two\'] is ‘.$foo2['two'].”;
    $result = $foo2['two'] - $foo1['one'];
    echo ‘the result is ‘.$result;
    ?>

    See how that runs…

  2. Shawn Wilsher Says:

    It seems to only do it with data in the $_POST variable.

    And I think you’re comment got hosed…

  3. Falcon4 Says:

    A little. The 105); was supposed to be the PHP start string. Everything else looks about right… :P

    Oh, except this line was dropped in the beginning:
    $foo1 = array(’one’=>102);

    If it’s only in the $_POST variable, try this variation:

    if (isset($_POST['one']) {
    $foo2 = array(’two’=>159);
    echo ‘$_POST[\’one\’] is ‘.$_POST[’one’].’’;
    echo ‘$foo2[\’two\’] is ‘.$foo2[’two’].’’;
    $result = $foo2[’two’] - $_POST[’one’];
    echo ‘the result is ‘.$result;
    } else {
    echo ”;
    }
    ?>

  4. Falcon4 Says:

    Yeah, that got hosed as well. It’s not that hard to htmlspecialchars() and nl2br() a comment, is it? :P

    The echo was supposed to be… convert () to brackets…

    (form method=”post”)(input type=”text” name=”one”)(input type=”submit”)(/form)

  5. Falcon4 Says:

    Ah, I see, it drops out wannabe HTML code. Why can’t it just print it? In the first comment it dropped out everything between (?php and $foo1=>105);. It saw the PHP tag’s bracket as the start, and the arrow/bracket in the => as the end tag.

    Yuck. What a fucking mess… :P

  6. Shawn Wilsher Says:

    yeah…it’s wordpress. I haven’t bothered to tweak it yet really. I’ll try your test case this weekend, and let you know.