On 25 Dec 2014, at 10:34, Riccardo Mottola <[email protected]> wrote:
> 
> Hi David,
> 
> David Chisnall wrote:

>> 2) It is*not*  safe to pass an NSInvocation constructed with 
>> -forwardInvocation: that returns an NSRect between threads.  Doing so will 
>> corrupt the stack in the caller context.  It may work due to timing 
>> sometimes, but it should never be relied upon.  The argframe contains a 
>> pointer to the caller's stack where the result will be written.
> I don't know the whole code here either, but I don't think I am calling 
> between threads here. True that operations have a worker thread, but I should 
> not be calling it.

Well, I looked at the code and it seemed to be that the call to the -winRect 
method is  being sent to a file operation and, presumably, the file operation 
is a proxy to an object in another thread/process.  That seems to match what 
David said.  I wonder if this is an issue with invocations that we could fix 
some way?
Anyway, I tried changing that method from -(NSRect)winRect to 
-(void)getWinRect:(NSRect*)rptr./t 

You could try that out to see if it helps (or revert the change if it doesn't).
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to