Hi, I have updated to the new CamelBones, but I am still having the problem of NSObject->isEqual not working properly.
To recap the thread below, I am calling -isEqual on cocoa components (I think NSButtons), and it returns values, which do not work as booleans in Perl (maybe a memory address). real code is here: http://bitbucket.org/thiloplanz/perlpad/src/tip/MyWindowController.pm#cl-229 $sender->isEqual($self->{PerlInputButton}) returns something like "44858369" This used to work back in the old days... Any idea on how I can fix or workaround this issue? Thanks, Thilo >> Have you tried -isEqual: for other classes? NSApplication is a >> singleton, and Apple may not have anticipated anyone comparing it with >> itself, or with random strings of text. :-) > > My real code does not call -isEqual: on NSApplication. > This was just test code for the sake of the bug report. > > I real life, I am calling it on UI components, I think NSButtons: > > http://bitbucket.org/thiloplanz/perlpad/src/tip/MyWindowController.pm#cl-229 > > > Thilo > >> >> I'll add some -isEqual: cases to the test suite, in any event. One >> can't have too many test cases. >> >> sherm-- >> >> On Sat, Dec 5, 2009 at 9:59 PM, Thilo Planz <thilopl...@googlemail.com> >> wrote: >>> Hi there, >>> >>> For a long time, PerlPad has been segfaulting on recent Camelbones >>> versions, and it seems that is caused BOOL return values no longer being >>> mapped properly into Perl. >>> >>> It seems that functions such as NSObject->isEqual that return a BOOL >>> return some kind of memory index to Perl. >>> >>> >>>> my $x = NSApplication->sharedApplication; >>>> print $x->isEqual($x); >>>> print "\n"; >>> should return YES, prints 44858369 >>> >>>> print $x->isEqual("random string"); >>>> print "\n"; >>> should return NO, prints 42636800 >>> >>>> print "true\n" if $x->isEqual("random string"); >>> should evaluate to false in boolean context, but evaluates as true. >>> >>> >>> I think in previous versions (of CB) this worked better. >>> >>> Is there any way I can rewrite my code to make at least >>> "isEqual" work for now? >>> >>> Thanks, >>> >>> Thilo >>> >> >> >> >