Hello community, here is the log from the commit of package zimg for openSUSE:Factory checked in at 2018-07-17 09:39:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/zimg (Old) and /work/SRC/openSUSE:Factory/.zimg.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "zimg" Tue Jul 17 09:39:30 2018 rev:28 rq:622510 version:2.7.5 Changes: -------- --- /work/SRC/openSUSE:Factory/zimg/zimg.changes 2018-04-25 09:56:43.453028356 +0200 +++ /work/SRC/openSUSE:Factory/.zimg.new/zimg.changes 2018-07-17 09:39:32.913911818 +0200 @@ -1,0 +2,7 @@ +Fri Jul 13 20:36:32 UTC 2018 - [email protected] + +- Update to 2.7.5: + * depth: fix SSE2 byte->float when width+4 is mod16 + * resize: allow downsampling to very low resolutions + +------------------------------------------------------------------- Old: ---- release-2.7.4.tar.gz New: ---- release-2.7.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ zimg.spec ++++++ --- /var/tmp/diff_new_pack.j1QmWp/_old 2018-07-17 09:39:33.525909688 +0200 +++ /var/tmp/diff_new_pack.j1QmWp/_new 2018-07-17 09:39:33.529909674 +0200 @@ -18,14 +18,14 @@ %define sover 2 Name: zimg -Version: 2.7.4 +Version: 2.7.5 Release: 0 Summary: Scaling, colorspace conversion, and dithering library License: WTFPL Group: Development/Libraries/C and C++ URL: https://github.com/sekrit-twc/zimg Source0: https://github.com/sekrit-twc/zimg/archive/release-%{version}.tar.gz -source99: baselibs.conf +Source99: baselibs.conf BuildRequires: autoconf BuildRequires: automake BuildRequires: gcc-c++ ++++++ release-2.7.4.tar.gz -> release-2.7.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zimg-release-2.7.4/ChangeLog new/zimg-release-2.7.5/ChangeLog --- old/zimg-release-2.7.4/ChangeLog 2018-02-07 23:06:44.000000000 +0100 +++ new/zimg-release-2.7.5/ChangeLog 2018-07-13 17:49:10.000000000 +0200 @@ -1,3 +1,7 @@ +2.7.5: +depth: fix SSE2 byte->float when width+4 is mod16 +resize: allow downsampling to very low resolutions + 2.7.4: x86: fix crash on Yorkfield (Core 2 Quad) processors (introduced in 2.7) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zimg-release-2.7.4/configure.ac new/zimg-release-2.7.5/configure.ac --- old/zimg-release-2.7.4/configure.ac 2018-02-07 23:06:44.000000000 +0100 +++ new/zimg-release-2.7.5/configure.ac 2018-07-13 17:49:10.000000000 +0200 @@ -1,4 +1,4 @@ -AC_INIT([zimg], [2.7.4], [https://github.com/sekrit-twc/zimg/pulls], [zimg], [https://github.com/sekrit-twc/zimg]) +AC_INIT([zimg], [2.7.5], [https://github.com/sekrit-twc/zimg/pulls], [zimg], [https://github.com/sekrit-twc/zimg]) AC_CONFIG_MACRO_DIR([m4]) : ${CFLAGS=""} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zimg-release-2.7.4/src/zimg/api/zimg.cpp new/zimg-release-2.7.5/src/zimg/api/zimg.cpp --- old/zimg-release-2.7.4/src/zimg/api/zimg.cpp 2018-02-07 23:06:44.000000000 +0100 +++ new/zimg-release-2.7.5/src/zimg/api/zimg.cpp 2018-07-13 17:49:10.000000000 +0200 @@ -36,7 +36,7 @@ thread_local zimg_error_code_e g_last_error = ZIMG_ERROR_SUCCESS; thread_local std::string g_last_error_msg; -constexpr unsigned VERSION_INFO[] = { 2, 7, 4 }; +constexpr unsigned VERSION_INFO[] = { 2, 7, 5 }; template <class T, class U> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zimg-release-2.7.4/src/zimg/depth/x86/depth_convert_sse2.cpp new/zimg-release-2.7.5/src/zimg/depth/x86/depth_convert_sse2.cpp --- old/zimg-release-2.7.4/src/zimg/depth/x86/depth_convert_sse2.cpp 2018-02-07 23:06:44.000000000 +0100 +++ new/zimg-release-2.7.5/src/zimg/depth/x86/depth_convert_sse2.cpp 2018-07-13 17:49:10.000000000 +0200 @@ -165,12 +165,11 @@ lo = _mm_sll_epi16(lo, count); hi = _mm_sll_epi16(hi, count); - if (right - vec_right > 8) { + if (right - vec_right >= 8) { _mm_store_si128((__m128i *)(dst_p + vec_right), lo); mm_store_idxlo_epi16((__m128i *)(dst_p + vec_right + 8), hi, right % 8); } else { - // Modulo does not handle the case where there are exactly 8 remaining pixels. - mm_store_idxlo_epi16((__m128i *)(dst_p + vec_right), lo, right - vec_right); + mm_store_idxlo_epi16((__m128i *)(dst_p + vec_right), lo, right % 8); } } } @@ -289,21 +288,20 @@ if (right != vec_right) { XITER(vec_right, XARGS); - if (right - vec_right > 12) { + if (right - vec_right >= 12) { _mm_store_ps(dst_p + vec_right + 0, lolo); _mm_store_ps(dst_p + vec_right + 4, lohi); _mm_store_ps(dst_p + vec_right + 8, hilo); mm_store_idxlo_ps(dst_p + vec_right + 12, hihi, right % 4); - } else if (right - vec_right > 8) { + } else if (right - vec_right >= 8) { _mm_store_ps(dst_p + vec_right + 0, lolo); _mm_store_ps(dst_p + vec_right + 4, lohi); mm_store_idxlo_ps(dst_p + vec_right + 8, hilo, right % 4); - } else if (right - vec_right > 4) { + } else if (right - vec_right >= 4) { _mm_store_ps(dst_p + vec_right + 0, lolo); mm_store_idxlo_ps(dst_p + vec_right + 4, lohi, right % 4); } else { - // Modulo does not handle the case where there are exactly 4 remaining pixels. - mm_store_idxlo_ps(dst_p + vec_right, lolo, right - vec_right); + mm_store_idxlo_ps(dst_p + vec_right, lolo, right % 4); } } #undef XITER @@ -346,12 +344,11 @@ if (right != vec_right) { XITER(vec_right, XARGS); - if (right - vec_right > 4) { + if (right - vec_right >= 4) { _mm_store_ps(dst_p + vec_right + 0, lo); mm_store_idxlo_ps(dst_p + vec_right + 4, hi, right % 4); } else { - // Modulo does not handle the case where there are exactly 4 remaining pixels. - mm_store_idxlo_ps(dst_p + vec_right, lo, right - vec_right); + mm_store_idxlo_ps(dst_p + vec_right, lo, right % 4); } } #undef XITER diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zimg-release-2.7.4/src/zimg/graph/filtergraph.cpp new/zimg-release-2.7.5/src/zimg/graph/filtergraph.cpp --- old/zimg-release-2.7.4/src/zimg/graph/filtergraph.cpp 2018-02-07 23:06:44.000000000 +0100 +++ new/zimg-release-2.7.5/src/zimg/graph/filtergraph.cpp 2018-07-13 17:49:10.000000000 +0200 @@ -1422,7 +1422,10 @@ ret = m_func(m_user, i, left, right); } catch (...) { ret = 1; + // VS 15.7 triggers an ICE here. +#if !(_MSC_VER == 1914 && _M_IX86) zassert_d(false, "user callback must not throw"); +#endif } if (ret) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zimg-release-2.7.4/src/zimg/resize/filter.cpp new/zimg-release-2.7.5/src/zimg/resize/filter.cpp --- old/zimg-release-2.7.4/src/zimg/resize/filter.cpp 2018-02-07 23:06:44.000000000 +0100 +++ new/zimg-release-2.7.5/src/zimg/resize/filter.cpp 2018-07-13 17:49:10.000000000 +0200 @@ -233,10 +233,6 @@ if (support > static_cast<unsigned>(UINT_MAX / 2)) error::throw_<error::ResamplingNotAvailable>("filter width too great"); - if (std::abs(shift) >= src_dim || shift + width + filter_size >= 2.0 * src_dim) - error::throw_<error::ResamplingNotAvailable>("image shift or subwindow too great"); - if (src_dim <= support || width <= support) - error::throw_<error::ResamplingNotAvailable>("filter width too great for image dimensions"); try { RowMatrix<double> m{ dst_dim, src_dim }; @@ -262,10 +258,13 @@ if (xpos < 0.0) real_pos = -xpos; else if (xpos >= src_dim) - real_pos = std::min(2.0 * src_dim - xpos, src_dim - 0.5); + real_pos = 2.0 * src_dim - xpos; else real_pos = xpos; + // Clamp the position if it is still out of bounds. + real_pos = std::min(std::max(real_pos, 0.0), std::nextafter(src_dim, -INFINITY)); + size_t idx = static_cast<size_t>(std::floor(real_pos)); m[i][idx] += f((xpos - pos) * step) / total; left = std::min(left, idx);
