Overview
| Comment: | Fix reference counting for blocks.
Hopefully, there is no weird situation left where it fails... |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
dbd79d07473cfca7a194da5a19925f38 |
| User & Date: | js on 2011-07-18 03:01:36 |
| Other Links: | manifest | tags |
Context
|
2011-07-18
| ||
| 22:53 | Add OFSet and OFMutableSet. (check-in: 8df328d503 user: js tags: trunk) | |
| 03:01 | Fix reference counting for blocks. (check-in: dbd79d0747 user: js tags: trunk) | |
|
2011-07-17
| ||
| 16:38 | Remove -[containsObjectIdenticalTo:] from OFCopying. (check-in: 8ff55bf218 user: js tags: trunk) | |
Changes
Modified src/OFBlock.m from [ff454a2522] to [0147efccdf].
| ︙ | ︙ | |||
293 294 295 296 297 298 299 | } if (src->forwarding == src) src->forwarding = *dst; memcpy(*dst, src, src->size); | < < < | 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | } if (src->forwarding == src) src->forwarding = *dst; memcpy(*dst, src, src->size); if (src->size >= sizeof(of_block_byref_t)) src->byref_keep(*dst, src); } else *dst = src; (*dst)->flags++; break; |
| ︙ | ︙ | |||
466 467 468 469 470 471 472 |
OF_BLOCK_REFCOUNT_MASK;
return OF_RETAIN_COUNT_MAX;
}
- (void)release
{
| > | | 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 |
OF_BLOCK_REFCOUNT_MASK;
return OF_RETAIN_COUNT_MAX;
}
- (void)release
{
if (isa == (Class)&_NSConcreteMallocBlock)
Block_release(self);
}
- (void)dealloc
{
@throw [OFNotImplementedException newWithClass: isa
selector: _cmd];
[super dealloc]; /* Get rid of a stupid warning */
|
| ︙ | ︙ |
Modified tests/OFBlockTests.m from [10c79b74fc] to [0518f13692].
| ︙ | ︙ | |||
64 65 66 67 68 69 70 |
(m = [[s copy] autorelease]) &&
[m class] == objc_getClass("OFMallocBlock") &&
[m isKindOfClass: [OFBlock class]])
TEST(@"Copying a global block", (id)g == [[g copy] autorelease])
TEST(@"Copying a malloc block",
| | | 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
(m = [[s copy] autorelease]) &&
[m class] == objc_getClass("OFMallocBlock") &&
[m isKindOfClass: [OFBlock class]])
TEST(@"Copying a global block", (id)g == [[g copy] autorelease])
TEST(@"Copying a malloc block",
(id)m == [m copy] && [m retainCount] == 2)
TEST(@"Autorelease a stack block", R([s autorelease]))
TEST(@"Autorelease a global block", R([g autorelease]))
TEST(@"Autorelease a malloc block", R([m autorelease]))
[pool drain];
}
@end
|