From owner-svn-src-projects@FreeBSD.ORG Thu Jul 28 17:31:50 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C3271065672; Thu, 28 Jul 2011 17:31:50 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1D1A08FC1D; Thu, 28 Jul 2011 17:31:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6SHVo73012650; Thu, 28 Jul 2011 17:31:50 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6SHVn7D012648; Thu, 28 Jul 2011 17:31:49 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201107281731.p6SHVn7D012648@svn.freebsd.org> From: Alexander Motin Date: Thu, 28 Jul 2011 17:31:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224481 - projects/hid/lib/libusbhid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jul 2011 17:31:50 -0000 Author: mav Date: Thu Jul 28 17:31:49 2011 New Revision: 224481 URL: http://svn.freebsd.org/changeset/base/224481 Log: Make hid_report_size() handle negative id argument value as wildcard. Modified: projects/hid/lib/libusbhid/parse.c Modified: projects/hid/lib/libusbhid/parse.c ============================================================================== --- projects/hid/lib/libusbhid/parse.c Thu Jul 28 13:49:32 2011 (r224480) +++ projects/hid/lib/libusbhid/parse.c Thu Jul 28 17:31:49 2011 (r224481) @@ -512,13 +512,14 @@ hid_report_size(report_desc_t r, enum hi uint32_t temp; uint32_t hpos; uint32_t lpos; + int report_id = 0; hpos = 0; lpos = 0xFFFFFFFF; memset(&h, 0, sizeof h); for (d = hid_start_parse(r, 1 << k, id); hid_get_item(d, &h); ) { - if (h.report_ID == id && h.kind == k) { + if ((h.report_ID == id || id < 0) && h.kind == k) { /* compute minimum */ if (lpos > h.pos) lpos = h.pos; @@ -527,6 +528,8 @@ hid_report_size(report_desc_t r, enum hi /* compute maximum */ if (hpos < temp) hpos = temp; + if (h.report_ID != 0) + report_id = 1; } } hid_end_parse(d); @@ -537,11 +540,8 @@ hid_report_size(report_desc_t r, enum hi else temp = hpos - lpos; - if (id) - temp += 8; - /* return length in bytes rounded up */ - return ((temp + 7) / 8); + return ((temp + 7) / 8 + report_id); } int