From ae6a77774291ba3aed57de0401bbd714889f8191 Mon Sep 17 00:00:00 2001 From: Frederik Seiffert Date: Wed, 15 May 2019 10:02:12 +0200 Subject: [PATCH] Add support for atomic type qualifiers. Fixes #101. --- encoding2.c | 2 +- selector_table.c | 2 +- sendmsg2.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/encoding2.c b/encoding2.c index 6a50ff5..0b9e072 100644 --- a/encoding2.c +++ b/encoding2.c @@ -21,7 +21,7 @@ size_t objc_alignof_type (const char *type); const char *objc_skip_type_qualifiers (const char *type) { - static const char *type_qualifiers = "rnNoORV"; + static const char *type_qualifiers = "rnNoORVA"; while('\0' != *type && strchr(type_qualifiers, *type)) { type++; diff --git a/selector_table.c b/selector_table.c index b11a449..34564f3 100644 --- a/selector_table.c +++ b/selector_table.c @@ -109,7 +109,7 @@ static const char *skip_irrelevant_type_info(const char *t) { default: return t; case 'r': case 'n': case 'N': case 'o': case 'O': case 'R': - case 'V': case '!': case '0'...'9': + case 'V': case 'A': case '!': case '0'...'9': return skip_irrelevant_type_info(t+1); } } diff --git a/sendmsg2.c b/sendmsg2.c index b9933d6..78a2255 100644 --- a/sendmsg2.c +++ b/sendmsg2.c @@ -183,7 +183,7 @@ struct objc_slot *objc_msg_lookup_sender(id *receiver, SEL selector, id sender) const char *t = selector->types; // Skip type qualifiers while ('r' == *t || 'n' == *t || 'N' == *t || 'o' == *t || - 'O' == *t || 'R' == *t || 'V' == *t) + 'O' == *t || 'R' == *t || 'V' == *t || 'A' == *t) { t++; } @@ -219,7 +219,7 @@ static struct objc_slot2* objc_slot_lookup(id *receiver, SEL selector) const char *t = selector->types; // Skip type qualifiers while ('r' == *t || 'n' == *t || 'N' == *t || 'o' == *t || - 'O' == *t || 'R' == *t || 'V' == *t) + 'O' == *t || 'R' == *t || 'V' == *t || 'A' == *t) { t++; } @@ -253,7 +253,7 @@ struct objc_slot2 *objc_slot_lookup_version(id *receiver, SEL selector, uint64_t const char *t = selector->types; // Skip type qualifiers while ('r' == *t || 'n' == *t || 'N' == *t || 'o' == *t || - 'O' == *t || 'R' == *t || 'V' == *t) + 'O' == *t || 'R' == *t || 'V' == *t || 'A' == *t) { t++; }