diff --git a/kcalc-4.9.2-misc.patch b/kcalc-4.9.2-misc.patch new file mode 100644 index 0000000..158177e --- /dev/null +++ b/kcalc-4.9.2-misc.patch @@ -0,0 +1,42 @@ +diff -up kcalc-4.9.2/kcalc_core.cpp.me kcalc-4.9.2/kcalc_core.cpp +--- kcalc-4.9.2/kcalc_core.cpp.me 2012-09-28 02:40:41.000000000 +0200 ++++ kcalc-4.9.2/kcalc_core.cpp 2012-11-08 11:45:57.646032345 +0100 +@@ -104,7 +104,13 @@ static KNumber ExecDivide(const KNumber + + static KNumber ExecMod(const KNumber &left_op, const KNumber &right_op) + { +- return left_op % right_op; ++ KNumber tmp_result = left_op % right_op; ++ ++ if ( right_op < KNumber::Zero ) ++ return -(-left_op % -right_op); ++ if ( tmp_result < KNumber::Zero ) ++ tmp_result += right_op; ++ return tmp_result; + } + + static KNumber ExecIntDiv(const KNumber &left_op, const KNumber &right_op) +@@ -132,6 +138,9 @@ static KNumber ExecBinom(const KNumber & + KNumber tmp_count = left_op; + KNumber tmp_result = KNumber::One; + ++ if ( right_op == KNumber::Zero ) ++ return KNumber::One; ++ + // don't do recursive factorial, + // because large numbers lead to + // stack overflows +@@ -587,8 +596,11 @@ void CalcEngine::Exp10(const KNumber &in + + void CalcEngine::Factorial(const KNumber &input) + { +- if (input == KNumber::PosInfinity) return; +- if (input < KNumber::Zero || input.type() == KNumber::SpecialType) { ++ if (input == KNumber::PosInfinity || input > KNumber(999999)) { ++ last_number_ = KNumber::PosInfinity; ++ return; ++ } ++ if (input < KNumber::Zero || input.type() == KNumber::SpecialType || input.type() != KNumber::IntegerType) { + error_ = true; + last_number_ = KNumber::NotDefined; + return; diff --git a/kcalc.spec b/kcalc.spec index 8d49457..5f03ac1 100644 --- a/kcalc.spec +++ b/kcalc.spec @@ -1,7 +1,7 @@ Name: kcalc Summary: Scientific Calculator Version: 4.9.3 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ URL: https://projects.kde.org/projects/kde/kdeutils/kcalc @@ -13,6 +13,9 @@ URL: https://projects.kde.org/projects/kde/kdeutils/kcalc %endif Source0: http://download.kde.org/%{stable}/%{version}/src/%{name}-%{version}.tar.xz +# fix arithmetic fault in binomial, factorial +Patch0: kcalc-4.9.2-misc.patch + BuildRequires: desktop-file-utils BuildRequires: kdelibs4-devel >= %{version} BuildRequires: gmp-devel @@ -34,6 +37,7 @@ functions than meet the eye on a first glance. %prep %setup -q -n %{name}-%{version} +%patch0 -p1 -b .misc %build mkdir -p %{_target_platform} @@ -66,6 +70,9 @@ desktop-file-validate %{buildroot}%{_kde4_datadir}/applications/kde4/%{name}.des %changelog +* Thu Nov 08 2012 Than Ngo - 4.9.3-2 +- fix arithmetic fault in binomial, factorial + * Sat Nov 03 2012 Rex Dieter - 4.9.3-1 - 4.9.3