From: kentkt@... Date: 2019-07-29T07:07:49+00:00 Subject: [ruby-core:93970] [Ruby master Misc#16025] 'st_check_for_sizeof_st_index_t' declared as array with a negative size (emscripten) Issue #16025 has been updated by k_takata (Ken Takata). Original discussion at here: https://github.com/k-takata/Onigmo/issues/130 I think it's better to fix this in Ruby rather than in Onigmo. I can suggest two ways. 1\. Add `#ifndef` around `st_check_for_sizeof_st_index_t` ```diff --- a/include/ruby/st.h +++ b/include/ruby/st.h @@ -55,7 +55,9 @@ typedef st_data_t st_index_t; typedef int st_compare_func(st_data_t, st_data_t); typedef st_index_t st_hash_func(st_data_t); +#ifndef __EMSCRIPTEN__ typedef char st_check_for_sizeof_st_index_t[SIZEOF_VOIDP == (int)sizeof(st_index_t) ? 1 : -1]; +#endif #define SIZEOF_ST_INDEX_T SIZEOF_VOIDP struct st_hash_type { ``` 2\. Remove `st_check_for_sizeof_st_index_t` The size of `void*` and `long` or `long long` are already checked at here: https://github.com/ruby/ruby/blob/8c6f1715f03e0322c96d614a42c30bee0b7790eb/include/ruby/st.h#L21-L27 Checking the size of `st_index_t` might be redundant. ---------------------------------------- Misc #16025: 'st_check_for_sizeof_st_index_t' declared as array with a negative size (emscripten) https://bugs.ruby-lang.org/issues/16025#change-80162 * Author: vadimp (Vadim Peretokin) * Status: Open * Priority: Normal * Assignee: ---------------------------------------- Compilation of st.h with Emscripten 1.38.30 fails: ``` c st.h:65:45: error: 'st_check_for_sizeof_st_index_t' declared as an array with a negative size typedef char st_check_for_sizeof_st_index_t[SIZEOF_VOIDP == (int)sizeof(st_index_t) ? 1 : -1]; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3rdparty/edbee-lib/vendor/onig/config.h:109:22: note: expanded from macro 'SIZEOF_VOIDP' #define SIZEOF_VOIDP 8 ^ 1 error generated. shared:ERROR: compiler frontend failed to generate LLVM bitcode, halting Makefile:36871: recipe for target 'regcomp.o' failed ``` Both sizeof are set to 8: ```c onig$ cat config.h | grep SIZEOF_LONG #define SIZEOF_LONG 8 #define SIZEOF_LONG_LONG 8 ``` Is there a way to fix this issue or add a workaround for emscripten (`__EMSCRIPTEN__`)? -- https://bugs.ruby-lang.org/ Unsubscribe: