Skip to content
This repository has been archived by the owner on Nov 7, 2019. It is now read-only.

Fix for infinite recursion bug #28

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Fix for infinite recursion bug #28

wants to merge 2 commits into from

Conversation

walkevin
Copy link

This is a pull request regarding the following bug:
If, for whatever reason, jquery.flot.axislabels.js is loaded twice, the plugin gets registered twice in the $.plot.plugins array and therefore the hook function is registered twice, too. For this particular plugin, this leads to an infinite recursion, because somehow the trick with the secondPass flag fails and the second call to the hook function never returns, but again calls the draw function, which calls the hook function twice again, and the second call again never returns and so on.

A demonstration can be found here: https://gist.github.com/walkevin/cbb6454e521f30126c13 (Notice that you might need to change the source for the axislabels.js. I didn't find it on a CDN Service)

You might argue that it is the responsibility of the developer to assure that the script is loaded only once, but since the error is so catastrophic and has such an unexpected reason which is specific to this plugin, I'm suggesting a simple fix, just to make sure that the plugin is never registered twice.

If the script is loaded twice in Firefox, then axisLabels will be
registered twice in the plugins array, which eventually causes an
infinite recursion, since the trick with the secondPass flag fails in
these circumstances.
@PlippiePlop
Copy link

This pull request can be automatically merged by project collaborators.
Can someone please merge it?.

@markrcote
Copy link
Owner

Heya, sorry for taking so long to respond. I see what you're saying; however, I think it might be better to put this check into init() instead. I would also prefer setting the variable to false at the top of the file rather than checking if it's undefined.

@@ -454,8 +455,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}


if(jqueryFlotAxisLabelsIsRegistered !== undefined){
var jqueryFlotAxisLabelsIsRegistered = true;
if(jqueryFlotAxisLabelsIsRegistered !== false){
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be === false.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants