On Tue, 2020-04-21 at 09:20 +0200, Berthold Stoeger wrote: > Ok, this one is weird. > > > That appears to be g++, right? To me this looks like it trips on an > assertion > of a "vector[n]" access. The one thing I found in the offending > function was a > construct of the type > "&mean[0]" > to pass an array down to C, which *technically* is indeed undefined > behavior > if "mean" is empty. However, the whole point of operator[] is that it > is > unchecked and as long as the callee doesn't access the array, this > should work > just fine. After all it is only taking an address.
Ah the beauty of corner cases... > Therefore, I replaced above construct by "mean.data()" and put the > call in an > if for good measure: > https://github.com/Subsurface-divelog/subsurface/pull/2778 > Please test this. As I mentioned in my other response... there are no OBS builds for PRs. > If my suspicion is correct, I consider that very unfriendly behavior > of the > compiler / library. @Dirk: does that version compile with other than > the > default settings? You can see the settings used in packaging/OBS cmake -DCMAKE_BUILD_TYPE=Release \ -DLRELEASE=lrelease-qt5 \ -DCMAKE_INSTALL_PREFIX=%{buildroot}/usr \ -DLIBDIVECOMPUTER_INCLUDE_DIR=$RPM_BUILD_DIR/install-root/include \ -DLIBGIT2_INCLUDE_DIR=$RPM_BUILD_DIR/install-root/include \ -DLIBDIVECOMPUTER_LIBRARIES=$RPM_BUILD_DIR/install-root/lib/libdivecomputer.a \ -DCMAKE_C_FLAGS:STRING="%optflags" \ -DCMAKE_CXX_FLAGS:STRING="%optflags" \ -DNO_PRINTING=OFF \ .. ; \ make VERBOSE=1 %{?_smp_mflags} subsurface) My theory would be that the difference we are seeing here is that different distributions use different flags as '%optflags' for compilations and we inherit those. And of course, we build with clang on Mac/iOS/Android and gcc for Windows and (I believe) all of the Linux builds. /D _______________________________________________ subsurface mailing list subsurface@subsurface-divelog.org http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface