ObjFW  Check-in [a6b45eec2f]

Overview
Comment:Allow using [ofobject resizeMem: NULL toSize: size].
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: a6b45eec2fb5dfbf470f6eb2b47eb9d88c638deaa22d064c87fcecdca2f0ac61
User & Date: js on 2008-11-01 21:47:51
Other Links: manifest | tags
Context
2008-11-01
22:20
Some exception stuff & withSize -> ofSize for OFObject. check-in: 9944a6f8a4 user: js tags: trunk
21:47
Allow using [ofobject resizeMem: NULL toSize: size]. check-in: a6b45eec2f user: js tags: trunk
21:27
Add interface for OFBigArray. check-in: 365925e363 user: js tags: trunk
Changes

Modified src/OFObject.m from [504a3629c1] to [dfdab0e3f3].

90
91
92
93
94
95
96



97
98
99
100
101
102
103
}

- (void*)resizeMem: (void*)ptr
	    toSize: (size_t)size
{
	struct __ofobject_allocated_mem *iter;




	for (iter = __mem_pool; iter != NULL; iter = iter->prev) {
		if (iter->ptr == ptr) {
			if ((ptr = realloc(iter->ptr, size)) == NULL) {
				[[OFNoMemException newWithObject: self
							 andSize: size] raise];
				return iter->ptr;
			}







>
>
>







90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
}

- (void*)resizeMem: (void*)ptr
	    toSize: (size_t)size
{
	struct __ofobject_allocated_mem *iter;

	if (ptr == NULL)
		return [self getMemWithSize: size];

	for (iter = __mem_pool; iter != NULL; iter = iter->prev) {
		if (iter->ptr == ptr) {
			if ((ptr = realloc(iter->ptr, size)) == NULL) {
				[[OFNoMemException newWithObject: self
							 andSize: size] raise];
				return iter->ptr;
			}

Modified tests/OFObject/OFObject.m from [ad58ee962e] to [9337e68438].

81
82
83
84
85
86
87
88

89





90
91
92
93
94
	puts("Trying to allocate more memory than possible...");
	CATCH_EXCEPTION(p = [obj getMemWithSize: 4294967295U], OFNoMemException)

	puts("Allocating 1 byte...");
	p = [obj getMemWithSize: 1];

	puts("Trying to resize that 1 byte to more than possible...");
	CATCH_EXCEPTION(p = [obj resizeMem: p toSize: 4294967295U],

	    OFNoMemException)





	
	/* TODO: Test if freeing object frees all memory */

	return 0;
}







|
>

>
>
>
>
>





81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
	puts("Trying to allocate more memory than possible...");
	CATCH_EXCEPTION(p = [obj getMemWithSize: 4294967295U], OFNoMemException)

	puts("Allocating 1 byte...");
	p = [obj getMemWithSize: 1];

	puts("Trying to resize that 1 byte to more than possible...");
	CATCH_EXCEPTION(p = [obj resizeMem: p
				    toSize: 4294967295U],
	    OFNoMemException)

	puts("Trying to resize NULL to 1024 bytes...");
	p = [obj resizeMem: NULL
		    toSize: 1024];
	[obj freeMem: p];
	
	/* TODO: Test if freeing object frees all memory */

	return 0;
}