ObjFW  Diff

Differences From Artifact [9014452587]:

To Artifact [5994e9e90d]:


47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

BOOL
class_registerAlias_np(Class cls, const char *name)
{
	if (classes == NULL)
		return NO;

	objc_hashtable_set(classes, name, cls);

	return YES;
}

static void
register_selectors(struct objc_abi_class *cls)
{







|







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

BOOL
class_registerAlias_np(Class cls, const char *name)
{
	if (classes == NULL)
		return NO;

	objc_hashtable_set(classes, name, (Class)((uintptr_t)cls | 1));

	return YES;
}

static void
register_selectors(struct objc_abi_class *cls)
{
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
{
	Class c;

	if (classes == NULL)
		return Nil;

	objc_global_mutex_lock();
	c = (Class)objc_hashtable_get(classes, name);
	objc_global_mutex_unlock();

	return c;
}

static void
call_method(Class cls, const char *method)







|







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
{
	Class c;

	if (classes == NULL)
		return Nil;

	objc_global_mutex_lock();
	c = (Class)((uintptr_t)objc_hashtable_get(classes, name) & ~1);
	objc_global_mutex_unlock();

	return c;
}

static void
call_method(Class cls, const char *method)
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
	if (classes == NULL)
		return;

	for (i = 0; i <= classes->last_idx; i++) {
		if (classes->data[i] != NULL) {
			Class cls = classes->data[i]->obj;

			if (cls == Nil)
				continue;

			objc_free_class(cls);
			objc_free_class(cls->isa);
		}
	}








|







612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
	if (classes == NULL)
		return;

	for (i = 0; i <= classes->last_idx; i++) {
		if (classes->data[i] != NULL) {
			Class cls = classes->data[i]->obj;

			if (cls == Nil || (uintptr_t)cls & 1)
				continue;

			objc_free_class(cls);
			objc_free_class(cls->isa);
		}
	}