Chrome V8 Bug? Function Acting different after being called a 2nd time

Please take a look at the following JavaScript. I've taken stuff out of it, so you may focus on the essence of the problem.

You'll notice that I call the prepPath function twice in a row, passing in the exact same string. In firefox and IE8, this function alerts true each time (as expected). But, in Chromium 5.0.375.127 (55887) Ubuntu 10.04, the function returns true the first time, and false the 2nd call, despite the input remaining exactly the same!

<script type="text/javascript"> 
    function prepPath(str)
        var regX = /[^\s/"'\\].*[^\s/"'\\]/g;
            alert("true: " + str);
            alert("false; " + str);

    prepPath("/desktop"); // alerts: true
    prepPath("/desktop"); // alerts: false 

Why is it returning false the second time in Chromium?



There's some ambiguity in the spec about when literal regexes should get reset (recall that they have state). You can work around this by doing this:

var regX = new RegExp(/[^\s/"'\\].*[^\s/"'\\]/g);

live example:

or this:

var regX = /[^\s/"'\\].*[^\s/"'\\]/g;
regX.lastIndex = 0;

live example:

I'm informed by those who've looked into it more than I have that it's not actually an outright bug, but an ambiguity. And it's not just Chrome, some versions of other browsers have also had a similar problem.


Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.