]> granicus.if.org Git - re2c/commitdiff
Don't assert that comparator arguments are non-equal.
authorUlya Trofimovich <skvadrik@gmail.com>
Tue, 1 Aug 2017 07:22:14 +0000 (08:22 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Tue, 1 Aug 2017 07:22:14 +0000 (08:22 +0100)
Comparator is used in 'std::sort'.
All items in closure have unnique TNFA states, therefore we assumed
that the compared items must always be different. However, 'std::sort'
does not have this requirement and some implementations of it compare
the element with itself.

The removed assert caused crashes with old version of GCC (4.2).

Thanks to Sergei Trofimovich for debugging the issue.

re2c/src/dfa/closure.cc

index cdda60c1e0ce111898937c2100b452c9de50acba..353233c0b08261e622152be5c12c3da184d5d84e 100644 (file)
@@ -56,7 +56,7 @@ bool cmpby_rule_state(const clos_t &x, const clos_t &y)
        if (rx > ry) return false;
        if (sx < sy) return true;
        if (sx > sy) return false;
-       assert(false);
+       // all items in closute have different states
        return false;
 }