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);


Reply via email to