[wp-hackers] Getting Bugs Noticed

Jacob Santos wordpress at santosj.name
Sun Mar 8 07:11:52 GMT 2009


That is actually a pretty good solution. I'll fix your patch (must be 
.diff or .patch and not .txt) and resubmit it.

I meant "good catch."

Jacob Santos

Brian Krausz wrote:
> Sorry for the slow reply:
>
> Since I'm the one to write the patch which contributed the most to
>   
>> _wp_filter_build_unique_id(), I'll say that you are doing it wrong. The
>> function was never meant to handle your use case. It is working as it
>> supposed to. The issue is that you are changing the data of what the
>> function sees as the same instance (it isn't, which is where it appears the
>> bug stems from).
>>     
>
>
> Exactly my point, two instances should not be considered the "same", since
> every instance of a class can have its own branching.  You can't assume a
> class will always add the same action as their first add_action call.
>
>
>   
>> If you work it out, the first instance works out to Foobaz0 and the second
>> instance should work out to Foobaz1. This is assuming that the plugin code
>> is isolated. I will have to take a further look at it, because it does not
>> seem like bar() is doing anything in your example, but the result should be
>> "12" and not just "2". So most likely your use case was not tested fully.
>> That is easy enough to correct, just write test cases for your example and
>> see what happens and if it fails, then attempt to fix it until the tests
>> pass.
>>     
>
>
> That's more or less what I did, but with my actual code: the exact fix was
> swapping the init call and the other call.
>
>
>   
>> Where you are incorrect is that once array(&$this, 'bar') is added to
>> 'something1', it should gain the _wp_filter_id to 0 and when array(&$this,
>> 'baz') is added to 'init' hook, the _wp_filter_id should already exist. You
>> are correct in that when the second instance is created and it goes to add
>> array(&$this, 'bar') to 'something2' it will not find _wp_filter_id, nor
>> will it find any other items in 'something2', so it will also set it to 0.
>> You are correct in that instead of getting the correct 'Foobaz0' and
>> 'Foobaz1', you end up with both 'Foobaz0'. Interestingly, if you had
>> something actually echoed in 'bar', you'll probably see both items (in
>> theory). In the case of the 'init' hook, the second instance is replacing
>> the first, which is why you only see '2'.
>>     
>
>
>   
>> This could be fixed if you had the 'init' hook first instead of second. It
>> is probably why the static method worked in your case, because for static
>> methods, the _wp_filter_id is not set, therefore when it gets to the init
>> hook, it sets it and then counts the amount of the hooks. It seems like your
>> bug is probably biting the asses of all of the dumbasses who are writing
>> their plugins incorrectly. Good chance!
>>     
>
>
> I understand the reasoning here, and know the solution to the situation, but
> IMHO the function doesn't follow its spec.  The spec (though not explicitly
> stated), is to hash an object so that it can be stored without risk of
> overwriting instances of other objects.  Since there exists a way to cause
> objects to overwrite each other while still following the spec of
> add_action, I see a problem.
>
>
>   
>> Unfortunately, I do not see a fix at this time. If you can think of another
>> algorithm to make the function more idiot proof, it should suffice until the
>> world creates a bigger idiot (not you, you found the problem and reported
>> it, I'm talking about those who are affected by this and don't know it).
>>     
>
>
> What about using a static var that's incremented with each read to fill
> wp_filter_id.  That guarantees it will be unique amongst other objects.  It
> could track class names so the id stays smaller, but I see no benefit to
> that...
>
>
>   
>> Jacob Santos
>>
>> PS: It will it go a long way to getting things solved, if you create a
>> patch for a possible solution. I could really care less for #8731, therefore
>> someone else is going to need to look at it or you are going to have to
>> handle it yourself. Now, I might have some interest in it if you slap me
>> around a little and threaten to harm my next door neighbor who I could also
>> care less about.
>>     
>
>
> Thanks for the advice, I didn't realize patches push things along that
> well.  I'm away vacation soon, so my responses may be delayed, but my patch
> is attached to the bug.
>
> Thanks,
> Brian
>
> Brian Krausz wrote:
>   
>>>  Hey guys,
>>>
>>>  I have two bugs from a while back that seem to have gone ignored:
>>>
>>>  https://core.trac.wordpress.org/ticket/8723
>>>  https://core.trac.wordpress.org/ticket/8731
>>>
>>>  I'm wondering if there's something I'm doing that causes these bugs
>>>  to go unnoticed?  I feel bad assigning them to random people, but I
>>>  would like them to be discussed, and they need a consensus before I
>>>  can submit a patch for them.
>>>
>>>  Thanks, Brian _______________________________________________
>>>  wp-hackers mailing list wp-hackers at lists.automattic.com
>>>  http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>
>>>       
>> _______________________________________________
>> wp-hackers mailing list
>> wp-hackers at lists.automattic.com
>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>
>>     
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
>   



More information about the wp-hackers mailing list