Boost C++ Libraries: Ticket #9067: rational::assign doesn't even have the basic guarantee https://svn.boost.org/trac10/ticket/9067 <p> The current implementation of the <code>assign</code> member function assigns the new components before normalization checks. Normalization throws if the components are too violating to fix, but the object has already been changed and the old values have been lost. Worse, if the object was created outside of the current stack frame, it will survive the exception in a state still violating its invariant! </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/9067 Trac 1.4.3 Daryle Walker Fri, 30 Aug 2013 13:18:38 GMT <link>https://svn.boost.org/trac10/ticket/9067#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9067#comment:1</guid> <description> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/85526" title="Fixed normalization problem with Boost.Rational's &#34;assign&#34;; add check ...">[85526]</a>) Fixed normalization problem with Boost.Rational's "assign"; add check for negative values too large for normalization (refs <a class="new ticket" href="https://svn.boost.org/trac10/ticket/9067" title="#9067: Bugs: rational::assign doesn't even have the basic guarantee (new)">#9067</a>) </p> </description> <category>Ticket</category> </item> </channel> </rss>