From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Leo Liu Newsgroups: gmane.emacs.bugs Subject: bug#17556: 24.4.50; fix math-bignum Date: Fri, 23 May 2014 12:46:05 +0800 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1400820511 10049 80.91.229.3 (23 May 2014 04:48:31 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 23 May 2014 04:48:31 +0000 (UTC) To: 17556@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri May 23 06:48:24 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WnhP6-00007o-1T for geb-bug-gnu-emacs@m.gmane.org; Fri, 23 May 2014 06:48:24 +0200 Original-Received: from localhost ([::1]:40984 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WnhP5-0001IS-L1 for geb-bug-gnu-emacs@m.gmane.org; Fri, 23 May 2014 00:48:23 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WnhOt-0001HI-Na for bug-gnu-emacs@gnu.org; Fri, 23 May 2014 00:48:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WnhOk-0002VP-Mo for bug-gnu-emacs@gnu.org; Fri, 23 May 2014 00:48:11 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:58257) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WnhOk-0002VL-Ji for bug-gnu-emacs@gnu.org; Fri, 23 May 2014 00:48:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1WnhOk-0002eM-1M; Fri, 23 May 2014 00:48:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Leo Liu Original-Sender: "Debbugs-submit" Resent-CC: jay.p.belanger@gmail.com, bug-gnu-emacs@gnu.org Resent-Date: Fri, 23 May 2014 04:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 17556 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org X-Debbugs-Original-Xcc: Jay Belanger Original-Received: via spool by submit@debbugs.gnu.org id=B.140082047810172 (code B ref -1); Fri, 23 May 2014 04:48:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 23 May 2014 04:47:58 +0000 Original-Received: from localhost ([127.0.0.1]:57133 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WnhOf-0002dz-6r for submit@debbugs.gnu.org; Fri, 23 May 2014 00:47:57 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:53018) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WnhOc-0002dg-FW for submit@debbugs.gnu.org; Fri, 23 May 2014 00:47:55 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WnhOO-0002Rp-3V for submit@debbugs.gnu.org; Fri, 23 May 2014 00:47:49 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:49015) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WnhOO-0002Rl-0b for submit@debbugs.gnu.org; Fri, 23 May 2014 00:47:40 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54704) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WnhOE-0001Bl-VN for bug-gnu-emacs@gnu.org; Fri, 23 May 2014 00:47:39 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WnhO5-0002QO-UX for bug-gnu-emacs@gnu.org; Fri, 23 May 2014 00:47:30 -0400 Original-Received: from mail-pb0-x235.google.com ([2607:f8b0:400e:c01::235]:36309) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WnhO5-0002QF-NE for bug-gnu-emacs@gnu.org; Fri, 23 May 2014 00:47:21 -0400 Original-Received: by mail-pb0-f53.google.com with SMTP id md12so3549999pbc.12 for ; Thu, 22 May 2014 21:47:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version:content-type; bh=E6Rqg93ltIib+7vEmti5nuvJwa+/XnHVAhfsghY+nB4=; b=XhUGTWq1N1pyAGV78AblWMz9ousW2FPMoYVU2svOwCPkHPOXQL/RnFT2tW99wKSOA4 opSuMp3PwkOMcKMzji6t5GGFvvA7VG8qJ/B/qW3CkPGYNWII+qx0rpGpldPBjEvxzLEN M2ftmLnzY9elbPzOl9Dfjg8skQyfNLmr3T7aeCxR4CXGnnTUrAY7xJeSo9RygzhkSuvz 84/QRgRV80QbpMgv8nfkH/AMB7Dp5Sex8lsCvPcKdp6xOipvESEcZk4HxRpOJfAICrpr C9BmtPCiadMxS0pJzkU6hhJ//PhfrHXyRThKrb1R7amcIVpwkYIckn2nxbC4uDU3c2yW Ja9g== X-Received: by 10.66.142.73 with SMTP id ru9mr2556932pab.41.1400820440095; Thu, 22 May 2014 21:47:20 -0700 (PDT) Original-Received: from fortuna ([123.119.93.100]) by mx.google.com with ESMTPSA id eh4sm2283010pbc.79.2014.05.22.21.47.17 for (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Thu, 22 May 2014 21:47:18 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:89380 Archived-At: Due to integer overflow (math-bignum most-negative-fixnum) is incorrect. Any objection if I fix it like in this patch: === modified file 'lisp/calc/calc.el' --- lisp/calc/calc.el 2014-01-01 07:43:34 +0000 +++ lisp/calc/calc.el 2014-05-23 04:42:18 +0000 @@ -2773,9 +2773,15 @@ ;; Coerce integer A to be a bignum. [B S] (defun math-bignum (a) - (if (>= a 0) - (cons 'bigpos (math-bignum-big a)) - (cons 'bigneg (math-bignum-big (- a))))) + (cond + ((>= a 0) + (cons 'bigpos (math-bignum-big a))) + ((= a most-negative-fixnum) + ;; Note: (- most-negative-fixnum) is most-negative-fixnum + (math-sub (cons 'bigneg (math-bignum-big (- (1+ a)))) + 1)) + (t + (cons 'bigneg (math-bignum-big (- a)))))) (defun math-bignum-big (a) ; [L s] (if (= a 0)