aboutsummaryrefslogtreecommitdiff
path: root/gcc/objc/objects.c
diff options
context:
space:
mode:
authorKresten Krab Thorup <krab@gcc.gnu.org>1993-05-05 08:13:15 +0000
committerKresten Krab Thorup <krab@gcc.gnu.org>1993-05-05 08:13:15 +0000
commit991d3e71ced0bb2e4c70807831d4c95a59edde51 (patch)
tree4d203aa1e9ae06ac3a0614c7889a5772a50214bd /gcc/objc/objects.c
parent84db222add1bde080bbcd48e53a8e8009296eb48 (diff)
downloadgcc-991d3e71ced0bb2e4c70807831d4c95a59edde51.zip
gcc-991d3e71ced0bb2e4c70807831d4c95a59edde51.tar.gz
gcc-991d3e71ced0bb2e4c70807831d4c95a59edde51.tar.bz2
Headerfiles reorganized
From-SVN: r4329
Diffstat (limited to 'gcc/objc/objects.c')
-rw-r--r--gcc/objc/objects.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/gcc/objc/objects.c b/gcc/objc/objects.c
index 8bc922b..7574412 100644
--- a/gcc/objc/objects.c
+++ b/gcc/objc/objects.c
@@ -37,21 +37,34 @@ id (*_objc_object_copy)(id) = __objc_object_copy;
id
class_create_instance(Class* class)
{
- id res = (*_objc_object_alloc)(class);
- res->class_pointer = class;
- return res;
+ id new = nil;
+ if (CLS_ISCLASS(class))
+ new = (*_objc_object_alloc)(class);
+ if (new!=nil)
+ new->class_pointer = class;
+ return new;
}
-id
+id
object_copy(id object)
{
- return (*_objc_object_copy)(object);
+ if ((object!=nil)&&CLS_ISCLASS(object->class_pointer))
+ return (*_objc_object_copy)(object);
+ else
+ return nil;
}
-id
+id
object_dispose(id object)
{
- return (*_objc_object_dispose)(object);
+ if ((object!=nil)&&CLS_ISCLASS(object->class_pointer))
+ {
+ if (_objc_object_dispose)
+ (*_objc_object_dispose)(object);
+ else
+ free(object);
+ }
+ return nil;
}
id __objc_object_alloc(Class* class)