From 115fec062ccf7c6d72c8d5f64b7a5d84c9fb2dd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?= Date: Fri, 7 Feb 2020 14:14:05 +0900 Subject: [PATCH] more on NULL versus functions. Function pointers are not void*. See also ce4ea956d24eab5089a143bba38126f2b11b55b6 8427fca49bd85205f5a8766292dd893f003c0e48 --- dir.c | 4 ++-- dln.c | 3 ++- enc/trans/newline.trans | 10 +++++----- encoding.c | 2 +- ext/-test-/typeddata/typeddata.c | 2 +- range.c | 2 +- st.c | 4 ++-- thread.c | 6 +++--- thread_pthread.c | 2 +- thread_sync.c | 2 +- time.c | 4 ++-- tool/transcode-tblgen.rb | 6 +++--- transcode.c | 2 +- vm.c | 8 ++++---- 14 files changed, 29 insertions(+), 28 deletions(-) diff --git a/dir.c b/dir.c index 0957800070..ea0edf5982 100644 --- a/dir.c +++ b/dir.c @@ -2714,7 +2714,7 @@ ruby_glob(const char *path, int flags, ruby_glob_func *func, VALUE arg) { ruby_glob_funcs_t funcs; funcs.match = func; - funcs.error = NULL; + funcs.error = 0; return ruby_glob0(path, AT_FDCWD, 0, flags & ~GLOB_VERBOSE, &funcs, arg, rb_ascii8bit_encoding()); } @@ -2843,7 +2843,7 @@ ruby_brace_glob_with_enc(const char *str, int flags, ruby_glob_func *func, VALUE flags &= ~GLOB_VERBOSE; args.funcs.match = func; - args.funcs.error = NULL; + args.funcs.error = 0; args.value = arg; args.flags = flags; return ruby_brace_expand(str, flags, glob_brace, (VALUE)&args, enc, Qfalse); diff --git a/dln.c b/dln.c index 78c4c45a1f..2251547c54 100644 --- a/dln.c +++ b/dln.c @@ -1254,7 +1254,8 @@ static bool dln_incompatible_library_p(void *handle) { void *ex = dlsym(handle, EXTERNAL_PREFIX"ruby_xmalloc"); - return ex && ex != ruby_xmalloc; + void *const fp = (void *)ruby_xmalloc; + return ex && ex != fp; } COMPILER_WARNING_POP #endif diff --git a/enc/trans/newline.trans b/enc/trans/newline.trans index a200ec00a7..9e763407f9 100644 --- a/enc/trans/newline.trans +++ b/enc/trans/newline.trans @@ -98,7 +98,7 @@ rb_universal_newline = { 2, /* max_output */ asciicompat_converter, /* asciicompat_type */ 2, universal_newline_init, universal_newline_init, /* state_size, state_init, state_fini */ - NULL, NULL, NULL, fun_so_universal_newline, + 0, 0, 0, fun_so_universal_newline, universal_newline_finish }; @@ -110,8 +110,8 @@ rb_crlf_newline = { 1, /* max_input */ 2, /* max_output */ asciicompat_converter, /* asciicompat_type */ - 0, NULL, NULL, /* state_size, state_init, state_fini */ - NULL, NULL, NULL, NULL + 0, 0, 0, /* state_size, state_init, state_fini */ + 0, 0, 0, 0 }; static const rb_transcoder @@ -122,8 +122,8 @@ rb_cr_newline = { 1, /* max_input */ 1, /* max_output */ asciicompat_converter, /* asciicompat_type */ - 0, NULL, NULL, /* state_size, state_init, state_fini */ - NULL, NULL, NULL, NULL + 0, 0, 0, /* state_size, state_init, state_fini */ + 0, 0, 0, 0 }; void diff --git a/encoding.c b/encoding.c index c77d3519b4..ca98b8edb0 100644 --- a/encoding.c +++ b/encoding.c @@ -1966,7 +1966,7 @@ Init_Encoding(void) rb_ary_push(list, enc_new(enc_table.list[i].enc)); } - rb_marshal_define_compat(rb_cEncoding, Qnil, NULL, enc_m_loader); + rb_marshal_define_compat(rb_cEncoding, Qnil, 0, enc_m_loader); } void diff --git a/ext/-test-/typeddata/typeddata.c b/ext/-test-/typeddata/typeddata.c index ae060960cd..374cbdf58d 100644 --- a/ext/-test-/typeddata/typeddata.c +++ b/ext/-test-/typeddata/typeddata.c @@ -2,7 +2,7 @@ static const rb_data_type_t test_data = { "typed_data", - {NULL, ruby_xfree, NULL}, + {0, ruby_xfree, 0}, NULL, NULL, 0/* deferred free */, }; diff --git a/range.c b/range.c index e182934fa3..8309016808 100644 --- a/range.c +++ b/range.c @@ -1569,7 +1569,7 @@ r_cover_range_p(VALUE range, VALUE beg, VALUE end, VALUE val) return TRUE; } - val_max = rb_rescue2(r_call_max, val, NULL, Qnil, rb_eTypeError, (VALUE)0); + val_max = rb_rescue2(r_call_max, val, 0, Qnil, rb_eTypeError, (VALUE)0); if (val_max == Qnil) return FALSE; return r_less(end, val_max) >= 0; diff --git a/st.c b/st.c index 3d95c812d1..9fababe2d0 100644 --- a/st.c +++ b/st.c @@ -1721,7 +1721,7 @@ int st_foreach(st_table *tab, st_foreach_callback_func *func, st_data_t arg) { const struct functor f = { func, arg }; - return st_general_foreach(tab, apply_functor, NULL, (st_data_t)&f, FALSE); + return st_general_foreach(tab, apply_functor, 0, (st_data_t)&f, FALSE); } /* See comments for function st_delete_safe. */ @@ -1729,7 +1729,7 @@ int st_foreach_check(st_table *tab, st_foreach_check_callback_func *func, st_data_t arg, st_data_t never ATTRIBUTE_UNUSED) { - return st_general_foreach(tab, func, NULL, arg, TRUE); + return st_general_foreach(tab, func, 0, arg, TRUE); } /* Set up array KEYS by at most SIZE keys of head table TAB entries. diff --git a/thread.c b/thread.c index ee73f364bc..f5efe40ab8 100644 --- a/thread.c +++ b/thread.c @@ -488,7 +488,7 @@ static void unblock_function_clear(rb_thread_t *th) { rb_native_mutex_lock(&th->interrupt_lock); - th->unblock.func = NULL; + th->unblock.func = 0; rb_native_mutex_unlock(&th->interrupt_lock); } @@ -961,7 +961,7 @@ thread_initialize(VALUE thread, VALUE args) } } else { - return thread_create_core(thread, args, NULL); + return thread_create_core(thread, args, 0); } } @@ -4582,7 +4582,7 @@ thgroup_memsize(const void *ptr) static const rb_data_type_t thgroup_data_type = { "thgroup", - {NULL, RUBY_TYPED_DEFAULT_FREE, thgroup_memsize,}, + {0, RUBY_TYPED_DEFAULT_FREE, thgroup_memsize,}, 0, 0, RUBY_TYPED_FREE_IMMEDIATELY }; diff --git a/thread_pthread.c b/thread_pthread.c index cbe6aa028a..29284ff0f9 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -587,7 +587,7 @@ Init_native_thread(rb_thread_t *th) if (r) condattr_monotonic = NULL; } #endif - pthread_key_create(&ruby_native_thread_key, NULL); + pthread_key_create(&ruby_native_thread_key, 0); th->thread_id = pthread_self(); fill_thread_id_str(th); native_thread_init(th); diff --git a/thread_sync.c b/thread_sync.c index efe295e64c..7af5172818 100644 --- a/thread_sync.c +++ b/thread_sync.c @@ -78,7 +78,7 @@ static const char* rb_mutex_unlock_th(rb_mutex_t *mutex, rb_thread_t *th); * */ -#define mutex_mark NULL +#define mutex_mark ((void(*)(void*))0) static size_t rb_mutex_num_waiting(rb_mutex_t *mutex) diff --git a/time.c b/time.c index fcc5f522e1..61d81e5fa4 100644 --- a/time.c +++ b/time.c @@ -5314,8 +5314,8 @@ time_mload(VALUE time, VALUE str) get_attr(nano_num, {}); get_attr(nano_den, {}); get_attr(submicro, {}); - get_attr(offset, (offset = rb_rescue(validate_utc_offset, offset, NULL, Qnil))); - get_attr(zone, (zone = rb_rescue(validate_zone_name, zone, NULL, Qnil))); + get_attr(offset, (offset = rb_rescue(validate_utc_offset, offset, 0, Qnil))); + get_attr(zone, (zone = rb_rescue(validate_zone_name, zone, 0, Qnil))); get_attr(year, {}); #undef get_attr diff --git a/tool/transcode-tblgen.rb b/tool/transcode-tblgen.rb index 156b2de197..c6b58dbe78 100644 --- a/tool/transcode-tblgen.rb +++ b/tool/transcode-tblgen.rb @@ -895,9 +895,9 @@ def transcode_tblgen(from, to, map, valid_encoding=UnspecifiedValidEncoding, #{max_input}, /* max_input */ #{max_output}, /* max_output */ #{ascii_compatibility}, /* asciicompat_type */ - 0, NULL, NULL, /* state_size, state_init, state_fini */ - NULL, NULL, NULL, NULL, - NULL, NULL, NULL + 0, 0, 0, /* state_size, state_init, state_fini */ + 0, 0, 0, 0, + 0, 0, 0 }; End TRANSCODE_GENERATED_TRANSCODER_CODE << transcoder_code diff --git a/transcode.c b/transcode.c index 5cdaaaf61f..12c35f99df 100644 --- a/transcode.c +++ b/transcode.c @@ -2925,7 +2925,7 @@ econv_memsize(const void *ptr) static const rb_data_type_t econv_data_type = { "econv", - {NULL, econv_free, econv_memsize,}, + {0, econv_free, econv_memsize,}, 0, 0, RUBY_TYPED_FREE_IMMEDIATELY }; diff --git a/vm.c b/vm.c index fae2b68127..f2f160b3f6 100644 --- a/vm.c +++ b/vm.c @@ -2383,7 +2383,7 @@ vm_memsize(const void *ptr) static const rb_data_type_t vm_data_type = { "VM", - {NULL, NULL, vm_memsize,}, + {0, 0, vm_memsize,}, 0, 0, RUBY_TYPED_FREE_IMMEDIATELY }; @@ -3666,9 +3666,9 @@ usage_analysis_register_clear(VALUE self) #else -MAYBE_UNUSED(static void (*ruby_vm_collect_usage_func_insn)(int insn)) = NULL; -MAYBE_UNUSED(static void (*ruby_vm_collect_usage_func_operand)(int insn, int n, VALUE op)) = NULL; -MAYBE_UNUSED(static void (*ruby_vm_collect_usage_func_register)(int reg, int isset)) = NULL; +MAYBE_UNUSED(static void (*ruby_vm_collect_usage_func_insn)(int insn)) = 0; +MAYBE_UNUSED(static void (*ruby_vm_collect_usage_func_operand)(int insn, int n, VALUE op)) = 0; +MAYBE_UNUSED(static void (*ruby_vm_collect_usage_func_register)(int reg, int isset)) = 0; #endif -- GitLab