diff options
author | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-08-27 12:21:36 +0900 |
---|---|---|
committer | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-08-27 15:52:26 +0900 |
commit | 78628618da98236fc1bf702079185b36ed394e2a (patch) | |
tree | 35dbfb9a3a01707619b332f77e71462902c89bad /st.c | |
parent | 6dd60cf114701f1ff3526381c0e742c588af2f91 (diff) | |
download | ruby-78628618da98236fc1bf702079185b36ed394e2a.tar.gz |
struct st_hash_type now free from ANYARGS
After 5e86b005c0f2ef30df2f9906c7e2f3abefe286a2, I now think ANYARGS is
dangerous and should be extinct. This commit adds function prototypes
for struct st_hash_type. Honestly I don't understand why they were
commented out at the first place.
Diffstat (limited to 'st.c')
-rw-r--r-- | st.c | 23 |
1 files changed, 20 insertions, 3 deletions
@@ -145,16 +145,17 @@ static const struct st_hash_type st_hashtype_num = { st_numhash, }; -/* extern int strcmp(const char *, const char *); */ +static int st_strcmp(st_data_t, st_data_t); static st_index_t strhash(st_data_t); static const struct st_hash_type type_strhash = { - strcmp, + st_strcmp, strhash, }; +static int st_locale_insensitive_strcasecmp_i(st_data_t lhs, st_data_t rhs); static st_index_t strcasehash(st_data_t); static const struct st_hash_type type_strcasehash = { - st_locale_insensitive_strcasecmp, + st_locale_insensitive_strcasecmp_i, strcasehash, }; @@ -2091,6 +2092,22 @@ st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n) return 0; } +static int +st_strcmp(st_data_t lhs, st_data_t rhs) +{ + const char *s1 = (char *)lhs; + const char *s2 = (char *)rhs; + return strcmp(s1, s2); +} + +static int +st_locale_insensitive_strcasecmp_i(st_data_t lhs, st_data_t rhs) +{ + const char *s1 = (char *)lhs; + const char *s2 = (char *)rhs; + return st_locale_insensitive_strcasecmp(s1, s2); +} + NO_SANITIZE("unsigned-integer-overflow", PUREFUNC(static st_index_t strcasehash(st_data_t))); static st_index_t strcasehash(st_data_t arg) |