[MacRuby-devel] Problems with return code from sheet (possible regression)

Michael Winterstein parzival at mindspring.com
Wed Oct 7 21:46:04 PDT 2009


It seems to be working in 2761, thanks.  For a little while none of  
those calls were getting through (apparently being sent to  
drb.method_missing) so I couldn't check if it was working.  'RunModal'  
is a workaround for that specific call, too.  I'm also looking into  
SL's new way of using sheets, with a completion handler.

Michael
On Oct 6, 2009, at 4:57 PM, Laurent Sansonetti wrote:

> FYI, the problem should (in theory) be fixed in r2741.
>
> Laurent
>
> On Oct 6, 2009, at 1:28 PM, Laurent Sansonetti wrote:
>
>> Hi Michael,
>>
>> It's actually a well-known bug. MacRuby trunk doesn't honor the  
>> sel_of_type BridgeSupport attribute, therefore your sheet callback  
>> is registered to the runtime with the default signature (where all  
>> arguments and return value are Objective-C objects), and later it  
>> fails to convert the returnCode argument (in this backtrace, 0x1)  
>> as an Objective-C object.
>>
>> Laurent
>>
>> On Oct 6, 2009, at 12:58 PM, Michael Winterstein wrote:
>>
>>> I seem to have run into nearly the same problem that I had a while  
>>> back, in this ticket:
>>> http://www.macruby.org/trac/ticket/221
>>>
>>> I haven't filed it yet this time since last time it turned out to  
>>> be already fixed, but I'm not certain that's the case now.  At any  
>>> rate, it's being handled by different functions.
>>> The same thing is happening - the return code being passed to my  
>>> delegate (from [NSApplication endSheet:returnCode]) isn't being  
>>> treated as the NSInteger it ought to be.  At least I think so.   
>>> Here's the trace, and you can see that the value 1(NSOKButton) is  
>>> being treated as id, causing problems (0/NSCancelButton doesn't  
>>> crash as it's a special case) :
>>>
>>> Program received signal:  “EXC_BAD_ACCESS”.
>>> (gdb) bt
>>> #0  rb_ocid_to_rval [inlined] () at /Users/parzival/devo/buried/ 
>>> MacRuby/trunk/include/ruby/ruby.h:1252
>>> #1  0x0000000100130161 in rb_vm_ocval_to_rval (ocval=0x1) at  
>>> compiler.cpp:6155
>>> #2  0x000000010110537c in ?? ()
>>> #3  0x00007fff820c29f9 in -[NSApplication endSheet:returnCode:] ()
>>> #4  0x00007fff81fd523e in -[NSApplication sendAction:to:from:] ()
>>> #5  0x00007fff81fd519d in -[NSControl sendAction:to:] ()
>>> #6  0x00007fff8206068b in -[NSCell  
>>> trackMouse:inRect:ofView:untilMouseUp:] ()
>>> #7  0x00007fff820911a3 in -[NSButtonCell  
>>> trackMouse:inRect:ofView:untilMouseUp:] ()
>>> #8  0x00007fff8205f135 in -[NSControl mouseDown:] ()
>>> #9  0x00007fff81f79967 in -[NSWindow sendEvent:] ()
>>> #10 0x00007fff81eaf122 in -[NSApplication sendEvent:] ()
>>> #11 0x00007fff81e45acc in -[NSApplication run] ()
>>> #12 0x00007fff81e3e798 in NSApplicationMain ()
>>>
>>> Attached are a few files as a test case, an NSWindowController  
>>> subclass and MainMenu.nib that can be dropped into a  new project  
>>> to check this if anyone wants to.  I recall when I first had this  
>>> problem that I could see what the change was, but unfortunately  
>>> I've forgotten that now.
>>> <Testfiles.zip>
>>>
>>>
>>>
>>> _______________________________________________
>>> MacRuby-devel mailing list
>>> MacRuby-devel at lists.macosforge.org
>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel



More information about the MacRuby-devel mailing list