[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] NSInvocation + tests
From: |
Willem Rein Oudshoorn |
Subject: |
[PATCH] NSInvocation + tests |
Date: |
04 Feb 2003 18:18:56 +0100 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
I mailed about a week ago about an incompatibility
of NSInvocation in GNUstep and Apple's WebObjects.
This mail contains a few files
1 - A patch for gnustep-base.
See ChangeLog below for what is changed.
2 - Patch for InvokeTarget in the tests project, to support new tests
3 - New file greg test file for the NSInvocation
PROBLEM DESCRIPTION
-------------------
A - NSInvocations in GNUstep do not retain their return values.
In Apple's WebObjects they are retained.
This is usefull if you use NSInvocations to communicate between
threads.
B - The logic for the _validReturn flag logic is broken. See the testcases.
But basically the flag is set to YES after the first invocation and
never reset to NO.
The Patch below fixes both of them.
Note that I have not tested the patch for GSFFIInvocation, because I
use GSFFCallIncocation.
Changelog for these fixes:
2003-02-04 Willem Rein Oudshoorn <woudshoo@xs4all.nl>
* Headers/gnustep/base/GSInvocation.h (CLEAR_RETURN_VALUE_IF_OBJECT):
New macro,
if invocation returns object release it.
(RETAIN_RETURN_VALUE): New macro, if invocation returns object release
it.
* Source/NSInvocation.m ([NSInvocation -dealloc]): Implement RELEASE
return object
([NSInvocation -setReturnValue:]) Implement RETAIN/RELEASE on return
object
([NSInvocation -invokeWithTarget:]): Implement RETAIN/RELEASE on return
object,
fixed _validReturn flag setting
* Source/GSFFIInvocation.m ([GSFFIInvocation -invokeWithTarget:]):
Fix _validReturn flag setting, Implement RETAIN/RELEASE on return
object.
* Source/GSFFCallInvocation.m ([GSFFCallInvocation
-invokeWithTarget:]):
Fix _validReturn flag setting. Implement RETAIN/RELEASE on return
object.
NEW TESTS
---------
Test the fixes above. Without the patch I get 3 FAILS in the new tests.
2 of those tests belong to the bug described in B above.
1 is a new test for the situation described in A.
Changelog for the patch and the new file:
2003-02-04 Willem Rein Oudshoorn <woudshoo@xs4all.nl>
* Resources/InvokeProxy.m ([InvokeTarget -returnIdButThrowException]):
New method
* NSInvocation/test01.scm: New file, containing simple
retain/release and getting return value test
Wim Oudshoorn.
base-NSInvocation-diff.bz2
Description: Patch for NSInvocation incompatibility
tests-diff.bz2
Description: Diff for InvokeTarget to support new tests
test01.scm.bz2
Description: New test cases for NSInvocation
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] NSInvocation + tests,
Willem Rein Oudshoorn <=