From owner-svn-src-stable@FreeBSD.ORG Fri May 29 20:25:03 2009 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 81CD21065674; Fri, 29 May 2009 20:25:03 +0000 (UTC) (envelope-from emax@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6FE2A8FC5E; Fri, 29 May 2009 20:25:03 +0000 (UTC) (envelope-from emax@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4TKP3sF085802; Fri, 29 May 2009 20:25:03 GMT (envelope-from emax@svn.freebsd.org) Received: (from emax@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4TKP3f2085801; Fri, 29 May 2009 20:25:03 GMT (envelope-from emax@svn.freebsd.org) Message-Id: <200905292025.n4TKP3f2085801@svn.freebsd.org> From: Maksim Yevmenkin Date: Fri, 29 May 2009 20:25:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193061 - stable/7/lib/libbluetooth X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2009 20:25:04 -0000 Author: emax Date: Fri May 29 20:25:03 2009 New Revision: 193061 URL: http://svn.freebsd.org/changeset/base/193061 Log: MFC r192113 Avoid floating point arithmetic while calculating iquiry length. Submitted by: Iain Hibbert < plunky -at- rya-online -dot- net > Modified: stable/7/lib/libbluetooth/ (props changed) stable/7/lib/libbluetooth/hci.c Modified: stable/7/lib/libbluetooth/hci.c ============================================================================== --- stable/7/lib/libbluetooth/hci.c Fri May 29 20:22:56 2009 (r193060) +++ stable/7/lib/libbluetooth/hci.c Fri May 29 20:25:03 2009 (r193061) @@ -410,7 +410,6 @@ bt_devinquiry(char const *devname, time_ ng_hci_inquiry_response *ir; struct bt_devinquiry *i; int s, n; - time_t to; if (ii == NULL) { errno = EINVAL; @@ -452,16 +451,20 @@ bt_devinquiry(char const *devname, time_ cp->lap[1] = 0x8b; cp->lap[2] = 0x9e; - /* Calculate inquire length in 1.28 second units */ - to = (time_t) ((double) length / 1.28); - if (to <= 0) - cp->inquiry_length = 4; /* 5.12 seconds */ - else if (to > 254) - cp->inquiry_length = 255; /* 326.40 seconds */ - else - cp->inquiry_length = to + 1; + /* + * Calculate inquire length in 1.28 second units + * v2.x specification says that 1.28 -> 61.44 seconds + * range is acceptable + */ + + if (length <= 0) + length = 5; + else if (length == 1) + length = 2; + else if (length > 62) + length = 62; - to = (time_t)((double) cp->inquiry_length * 1.28) + 1; + cp->inquiry_length = (uint8_t)((length * 100) / 128); if (num_rsp <= 0 || num_rsp > 255) num_rsp = 8; @@ -484,7 +487,7 @@ bt_devinquiry(char const *devname, time_ wait_for_more: - n = bt_devrecv(s, buf, sizeof(buf), to); + n = bt_devrecv(s, buf, sizeof(buf), length); if (n < 0) { free(i); bt_devclose(s);