diff --git a/NEWS.md b/NEWS.md index 309ef2b4..20f82b46 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,13 @@ # NEWS file for the UniversalCodeGrep project. +## [0.3.3] - 2016-12-30 + +UniversalCodeGrep (ucg) 0.3.3 is a minor bugfix release. + +## Fixed +- Resolved issue with SSE4.2 literal string matching not working correctly. +- Resolved legitimate Coverity issue in atomic compare/exchange template. + ## [0.3.2] - 2016-12-29 UniversalCodeGrep (ucg) 0.3.2 is a minor bugfix release with some major under-the-hood changes. diff --git a/configure.ac b/configure.ac index c044c3c6..b1fbe39d 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) LT_PREREQ([2.4.2]) -AC_INIT([UniversalCodeGrep], [0.3.2], [https://github.com/gvansickle/ucg/issues], [], [https://gvansickle.github.io/ucg/]) +AC_INIT([UniversalCodeGrep], [0.3.3], [https://github.com/gvansickle/ucg/issues], [], [https://gvansickle.github.io/ucg/]) AC_CONFIG_SRCDIR([src/Globber.cpp]) AC_CONFIG_HEADERS([config.h]) diff --git a/src/libext/memory.hpp b/src/libext/memory.hpp index 836eabcf..fd7e0e17 100644 --- a/src/libext/memory.hpp +++ b/src/libext/memory.hpp @@ -139,6 +139,11 @@ inline const void* memmem_short_pattern(const void *mem_to_search, size_t memlen if(unlikely(cf)) { // Some bits in xmm0 are set. Found at least the start of a match, maybe a full match, maybe more than one match. + // Note that while Intel's documentation doesn't make this very clear, pcmpestrm's Equal Ordered mode does in fact + // flag a partial match at the end of a 16-byte search string chunk. I.e.: + // frag1 : "0123456789abcdef" + // xmm_patt : "efghijk" + // xmm0 : "0000000000000010" // Get the bitmask into a non-SSE register. /// @todo This depends on GCC's definition of __m128i as a vector of 2 long longs.