Skip to content

Commit

Permalink
utf8.c: in-line only use of two macros
Browse files Browse the repository at this point in the history
These macros don't need to be macros, as they each are only called from
one place, and that isn't likely to change.
  • Loading branch information
khwilliamson committed Jul 31, 2021
1 parent b743db2 commit 233cd4a
Showing 1 changed file with 30 additions and 40 deletions.
70 changes: 30 additions & 40 deletions utf8.c
Expand Up @@ -167,44 +167,6 @@ const char nonchar_cp_format[] = "Unicode non-character U+%04" UVXf
const char super_cp_format[] = "Code point 0x%" UVXf " is not Unicode,"
" may not be portable";

#define HANDLE_UNICODE_SURROGATE(uv, flags, msgs) \
STMT_START { \
if (flags & UNICODE_WARN_SURROGATE) { \
U32 category = packWARN(WARN_SURROGATE); \
const char * format = surrogate_cp_format; \
if (msgs) { \
*msgs = new_msg_hv(Perl_form(aTHX_ format, uv), \
category, \
UNICODE_GOT_SURROGATE); \
} \
else { \
Perl_ck_warner_d(aTHX_ category, format, uv); \
} \
} \
if (flags & UNICODE_DISALLOW_SURROGATE) { \
return NULL; \
} \
} STMT_END;

#define HANDLE_UNICODE_NONCHAR(uv, flags, msgs) \
STMT_START { \
if (flags & UNICODE_WARN_NONCHAR) { \
U32 category = packWARN(WARN_NONCHAR); \
const char * format = nonchar_cp_format; \
if (msgs) { \
*msgs = new_msg_hv(Perl_form(aTHX_ format, uv), \
category, \
UNICODE_GOT_NONCHAR); \
} \
else { \
Perl_ck_warner_d(aTHX_ category, format, uv); \
} \
} \
if (flags & UNICODE_DISALLOW_NONCHAR) { \
return NULL; \
} \
} STMT_END;

/* Use shorter names internally in this file */
#define SHIFT UTF_ACCUMULATION_SHIFT
#undef MARK
Expand Down Expand Up @@ -360,10 +322,38 @@ Perl_uvoffuni_to_utf8_flags_msgs(pTHX_ U8 *d, UV input_uv, UV flags, HV** msgs)
case 3 + ONE_IF_EBCDIC_ZERO_IF_NOT:
if (input_uv >= UNICODE_SURROGATE_FIRST) {
if (UNLIKELY(UNICODE_IS_NONCHAR(input_uv))) {
HANDLE_UNICODE_NONCHAR(input_uv, flags, msgs);
if (flags & UNICODE_WARN_NONCHAR) {
U32 category = packWARN(WARN_NONCHAR);
const char * format = nonchar_cp_format;
if (msgs) {
*msgs = new_msg_hv(Perl_form(aTHX_ format, input_uv),
category,
UNICODE_GOT_NONCHAR);
}
else {
Perl_ck_warner_d(aTHX_ category, format, input_uv);
}
}
if (flags & UNICODE_DISALLOW_NONCHAR) {
return NULL;
}
}
else if (UNLIKELY(UNICODE_IS_SURROGATE(input_uv))) {
HANDLE_UNICODE_SURROGATE(input_uv, flags, msgs);
if (flags & UNICODE_WARN_SURROGATE) {
U32 category = packWARN(WARN_SURROGATE);
const char * format = surrogate_cp_format;
if (msgs) {
*msgs = new_msg_hv(Perl_form(aTHX_ format, input_uv),
category,
UNICODE_GOT_SURROGATE);
}
else {
Perl_ck_warner_d(aTHX_ category, format, input_uv);
}
}
if (flags & UNICODE_DISALLOW_SURROGATE) {
return NULL;
}
}
}

Expand Down

0 comments on commit 233cd4a

Please sign in to comment.