Old json.js / Object.prototype compatibility problem, new fix for jquery-1.3.2

Old json.js / Object.prototype compatibility problem, new fix for jquery-1.3.2


I've found an old thread talking about the compatibility issue with
json.js and jquery :
[ jQuery + Json library = broken jQuery ]
http://groups.google.com/group/jquery-dev/browse_thread/thread/5aecf614042d5a20/5eacf4619d19a8a7?lnk=gst&
q=json#
Whenever json.js, which mess with Object.prototype, is included in a
web page with jquery, two javascript errors are potentially awakened.
As I think it is awful to workaround this problem by modifying all
JSON related function calls or any other things that might have
injected into Object, I decided to let jquery to be more fault
tolerant to a given environment. Like how it did for cross browser
support.
The unified diff between jquery 1.3.2 and the changes I have made to
avoid the errors:
==============================================
--- jquery-1.3.2.js    2009-03-12 14:09:14.000000000 +0800
+++ jquery-1.3.2_fix.js    2009-03-12 14:15:38.000000000 +0800
@@ -1582,7 +1582,7 @@
    while ( expr && set.length ) {
        for ( var type in Expr.filter ) {
-            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
+            if ( Expr.match[ type ].exec && (match = Expr.match[ type ].exec
( expr )) != null ) {
                var filter = Expr.filter[ type ], found, item;
                anyFound = false;
@@ -2683,6 +2683,9 @@
        for ( var j in handlers ) {
            var handler = handlers[j];
+            if ( !handler.guid ) {
+                continue;
+            }
            // Filter the functions by class
            if ( all || namespace.test(handler.type) ) {
                // Pass in a reference to the handler function itself
==============================================
The first change avoided a problem in IE 5 that saying blahblahbalh
method not found.
The second change avoided an infinite recursion loop, though checking
the existence of guid may still be vulnerable to coincidence. Perhaps
adding a hopefully unique identifier(maybe the jQuery instance?) when
an event is being added via jQuery.event.add() will be safer?
I love jquery as it helped me much in not reinventing the wheels.
Hopefully the fixes will be incorporated as part of the jquery so that
the fixes can be shared by more people.