ObjFW  Check-in [6d589825cd]

Overview
Comment:Let - release return void again.

If you want to know if it will be released, you can just get the retain
count and check it this way.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 6d589825cd527020d6ba523a7b5733e80313ef7c1a1e7bcceffdd6ce3d07744b
User & Date: js on 2009-05-13 20:39:59
Other Links: manifest | tags
Context
2009-05-14
13:46
Two small fixes for OFAutoreleasePool. check-in: af41efe079 user: js tags: trunk
2009-05-13
20:39
Let - release return void again. check-in: 6d589825cd user: js tags: trunk
20:31
Rename - free to - (void)dealloc. check-in: 9e6dd00ef5 user: js tags: trunk
Changes

Modified src/OFAutoreleasePool.m from [4d907e6ad8] to [99c26c51d9].

108
109
110
111
112
113
114
115

116
117
118
119

120
121
122
123
124
125
126
108
109
110
111
112
113
114

115
116
117


118
119
120
121
122
123
124
125







-
+


-
-
+








	[objects add: obj];
	[obj release];

	return self;
}

- release
- (void)release
{
	[self releaseObjects];

	return [super release];
	[super release];
}

- releaseObjects
{
	if (objects == nil)
		return self;

Modified src/OFConstString.m from [1f3962463d] to [0526475295].

27
28
29
30
31
32
33
34

35
36
37
38
39
40
41
42
43
27
28
29
30
31
32
33

34
35

36
37
38
39
40
41
42







-
+

-







#endif

- retain
{
	return self;
}

- release
- (void)release
{
	return self;
}

- (size_t)retainCount
{
	return 1;
}

Modified src/OFObject.h from [aacf1f5953] to [9df3b05f63].

199
200
201
202
203
204
205
206

207
208
209
210
211
212
213
199
200
201
202
203
204
205

206
207
208
209
210
211
212
213







-
+







 * \return The retain count
 */
- (size_t)retainCount;

/**
 * Decreases the retain cound and deallocates the object if it reaches 0.
 */
- release;
- (void)release;

/**
 * Deallocates the object and also frees all memory allocated via its memory
 * pool.
 */
- (void)dealloc;
@end

Modified src/OFObject.m from [e6b5b1a83b] to [6b8000ea51].

364
365
366
367
368
369
370
371

372
373

374
375
376
377
378
379
380
381
382
383
384
385
364
365
366
367
368
369
370

371
372

373
374




375
376
377
378
379
380
381







-
+

-
+

-
-
-
-







}

- (size_t)retainCount
{
	return PRE_IVAR->retain_count;
}

- release
- (void)release
{
	if (!--PRE_IVAR->retain_count) {
	if (!--PRE_IVAR->retain_count)
		[self dealloc];
		return nil;
	}

	return self;
}

- (void)dealloc
{
	void **iter = PRE_IVAR->memchunks + PRE_IVAR->memchunks_size;

	while (iter-- > PRE_IVAR->memchunks)

Modified tests/OFAutoreleasePool/OFAutoreleasePool.m from [558bb07388] to [ca3ccd4ed1].

28
29
30
31
32
33
34
35

36
37
38
39
40
41
42
28
29
30
31
32
33
34

35
36
37
38
39
40
41
42







-
+







IMP init;
IMP retain;
IMP release;

@interface TestObject: OFObject
- init;
- retain;
- release;
- (void)release;
@end

@implementation TestObject
- init
{
	id ret;

57
58
59
60
61
62
63
64

65
66
67
68
69
70

71
72
73
74
75
76
77
57
58
59
60
61
62
63

64
65
66
67
68


69
70
71
72
73
74
75
76







-
+




-
-
+








	ret = retain(self, _cmd);
	printf("Retaining %s to " ZD "\n", [self name], [ret retainCount]);

	return ret;
}

- release
- (void)release
{
	releases++;

	printf("Releasing %s to " ZD "\n", [self name], [self retainCount] - 1);

	return release(self, _cmd);
	release(self, _cmd);
}
@end

int
main()
{
	inits = retains = releases = 0;