From: merch-redmine@... Date: 2019-07-03T21:34:56+00:00 Subject: [ruby-core:93520] [Ruby master Bug#11479] gcc warning variable may be used uninitialized Issue #11479 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Closed I think the vsnprintf.c issue is spurious, even in 2.2.3. I can't see a case were `uqval` isn't set and line 1074 is reached. case `x`/`X` sets it in line 1041. case `d`/`D` sets on line 846. case `u`/`U` sets it on line 1027. case `o`/`O` sets it on line 969. case `p` sets it on line 985 if `_HAVE_LLP64_` is defined, and if `_HAVE_LLP64_` is not defined, then it unsets the `QUADINT` flag on line 990, making it so line 1074 is not reached. It appears the same is true for string.c in 2.2.3. `ary` is set in line 6857 if a block is not given. If a block is given, it is set in line 6848 if `STRING_ENUMERATORS_WANTARRAY` is true, and otherwise `wantarray` is set to `0` on line 6851 and line 6879 would not be reached. In any case, `rb_str_enumerate_chars` now takes `ary` as an argument, so the issue shouldn't apply to the master branch in any case. It looks like there are a lot of bugs in GCC maybe-uninitialized (https://gcc.gnu.org/bugzilla/buglist.cgi?quicksearch=maybe%20uninitialized), so I think these are both false-positive compiler warnings. ---------------------------------------- Bug #11479: gcc warning variable may be used uninitialized https://bugs.ruby-lang.org/issues/11479#change-79081 * Author: zufuliu (Zufu Liu) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.2.3p173 (2015-08-18 revision 51636) [i386-mingw32] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- build ruby-2.2.3 on Windows XP using gcc-5.1.0 generates tow warnings: compiling signal.c compiling sprintf.c In file included from sprintf.c:1255:0: vsnprintf.c: In function 'BSD_vfprintf': vsnprintf.c:1074:15: warning: 'uqval' may be used uninitialized in this function [-Wmaybe-uninitialized] if (uqval != 0 || prec != 0) ^ compiling st.c compiling strftime.c compiling string.c string.c: In function 'rb_str_enumerate_chars': string.c:6879:3: warning: 'ary' may be used uninitialized in this function [-Wmaybe-uninitialized] rb_ary_push(ary, substr); ^ gcc: gcc version 5.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project) build procedure: ./configure mingw32-make ---Files-------------------------------- config.h (7.07 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: