From nobody Tue Jul 8 19:40:33 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bcBKw1my8z61QgP; Tue, 08 Jul 2025 19:40:52 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bcBKv5wqtz4FmD; Tue, 08 Jul 2025 19:40:51 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-553dceb342aso4236751e87.1; Tue, 08 Jul 2025 12:40:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752003648; x=1752608448; darn=freebsd.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kMVWtV2ayEpCQniX8zi68QIJNpwLxwXYVfVdTz3WxGo=; b=eRVxdbhvUI3yP1URYwOHHpN3uPp3hFg8klGAuhr+Ll7Q+6uXTp446ih7yPm9BrrkGv Dflxd4aaQZqlH/r+NnGK7SwbwTDNkzt5LnpEFdwZ/V8VM0pEsnOQnVjV0wQh9mhDlwjM 7nQnHVCBGv7hOR5IejZyzgQY+YqkiHybxqC8zqmzFYOeZ7u3zbRGuxyt5bnSzeYtar5F 7m6LroQVyQLWs52DaPFhKMsagTnSM3G4sv0ZMxrr5g4AifCmyaxu4jNn9ZZJIb/SmRv4 txYiJcctLPcMlkT04HgiTWSMQx1GgM36MXTMun3LtFn0NMGv03AfR6EA4zrgbGzQxX3q 0nHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752003648; x=1752608448; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kMVWtV2ayEpCQniX8zi68QIJNpwLxwXYVfVdTz3WxGo=; b=TfqOU99cBeA09APhz2C3Jn7UyCCgudFYl/LrlfQrxC9szM+bLoK3eqIGM1R1XnZwAg +uQ3cFGI6ngOoiXyiA8UHyqGsAJBQPj+lwy7jwpRl4DhlfDhwJxeyGFr3guDk0dAdOo9 nbDOyyYFv0Zeu9uYeP9Sls+hwVst8BCnUNxd3xc3MGT+CBRJ5O3Feyhw3KlTArHkwDay H6+0N4NOBJi2UUDb0j16jebc0sDi84icbE8A43biAgykZy3G7XDn605pf8/+3h5uMXYR 7Y8ElYl3jBCMs9qiAiOGLEkrS8iEvnlPydSh+CfigPM2OdcmsPcknKcVlwH4m6UXv9ZD x5ug== X-Forwarded-Encrypted: i=1; AJvYcCW6tVRlHmCoeeWYb4LfFq53E6IlJ43wUaathwXxbd1nFit16xrMdNPDssM/E0FVzpldkbxOxOfNAnqfd2leaJOZsTqxe9Y=@freebsd.org, AJvYcCWYXJbGEeLohaHunVclY3yNx1WcehtmMxH/0/5wFSisZp7yNXx/35/T10Iq55+lBPJVfnYtiGeOGwjUXmGfDVbHDQYe@freebsd.org X-Gm-Message-State: AOJu0Yx76ZsKkfrMaD72O1/4j+e2/+PSWKfllTEAHcP3Y6270FFLFaNY yXoumI7b+qQn1e1Qmr6/kKrZSrdpYviZ1qy8lAiy7k5vOVkyGdnk7EJgUnWS+jEtbLq0Re/2f8h Fh09KrRkREGI2oehgqUQjwWjsSEoUTK1/rA== X-Gm-Gg: ASbGncsy+mACLhPr9wE8W6JEZ39wIS+b6PC2HefHeeGAQc+sP0fcJswgDg2QJn3uFx4 Vp65mW2uDj5hZFE7VtfamIgw8c4aLtsDJlsqUrqqS8OD2tVBe2UKVIBii6yLgCHnKOjhps90jTZ Kiond2m9O4T2XI+XsTjL80ppqo2B0D+4XoH92FCbN/nx7U X-Google-Smtp-Source: AGHT+IFXal+DSVIuEpmq4UHXxvQikF8KPzpaNT3LLZlRUa3CBlFKR027vU+BbQLMWphXQ/8LFo88sFGhk+ZFg2KQfq8= X-Received: by 2002:a05:6512:ac4:b0:553:3486:1d9b with SMTP id 2adb3069b0e04-558f9aaa4d1mr133734e87.30.1752003647785; Tue, 08 Jul 2025 12:40:47 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202507081512.568FCeX8049407@gitrepo.freebsd.org> In-Reply-To: <202507081512.568FCeX8049407@gitrepo.freebsd.org> From: Adrian Chadd Date: Tue, 8 Jul 2025 12:40:33 -0700 X-Gm-Features: Ac12FXzWx1bL8fUVCoSJX8g970XvaLugGgAQbKpcWSOVSwSttwhHq-fuI0riwKQ Message-ID: Subject: Re: git: f84a0da4e060 - main - libusb: rename bNumDeviceCapabilities to bNumDeviceCaps for compatibility with libusb To: ShengYi Hung Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: multipart/alternative; boundary="000000000000124ea00639702305" X-Rspamd-Queue-Id: 4bcBKv5wqtz4FmD X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; TAGGED_FROM(0.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US] --000000000000124ea00639702305 Content-Type: text/plain; charset="UTF-8" hi! Thanks for this! Could we possibly wrap stuff like these compat macros in a #define that we can undefine? So we can make sure no new code shows up that uses the "old" paths? eg LIBUSB10_NO_BACKWARDS_COMPAT / LIBUSB20_NO_BACKWARDS_COMPAT ? Thanks! -adrian On Tue, 8 Jul 2025 at 08:12, ShengYi Hung wrote: > The branch main has been updated by aokblast: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=f84a0da4e0608a970c775f3d605f8de2b0b8d322 > > commit f84a0da4e0608a970c775f3d605f8de2b0b8d322 > Author: ShengYi Hung > AuthorDate: 2025-06-07 19:43:15 +0000 > Commit: ShengYi Hung > CommitDate: 2025-07-08 15:11:41 +0000 > > libusb: rename bNumDeviceCapabilities to bNumDeviceCaps for > compatibility with libusb > > THe member bNumDeviceCapabilities is referred to as bNumDeviceCaps in > the upstream libusb project. > > To improve compatibility, we are renaming the member accordingly. > > For backward compatibility, a mocro will be defined to map > bNumDeviceCapabilities to bNumDeviceCaps. > > See: > https://github.com/libusb/libusb/commit/02ebafc85d3f219842cbabaf78abc8100b6656e5 > > Reviewed by: kevans > Approved by: markj (mentor) > MFC after: 2 weeks > Sponsored by: FreeBSD Foundation > Differential Revision: https://reviews.freebsd.org/D50740 > --- > lib/libusb/libusb.h | 5 ++++- > lib/libusb/libusb10_desc.c | 11 ++++++----- > lib/libusb/libusb20_desc.h | 6 +++++- > 3 files changed, 15 insertions(+), 7 deletions(-) > > diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h > index 0aad29aa4ecc..491af3d0a5ec 100644 > --- a/lib/libusb/libusb.h > +++ b/lib/libusb/libusb.h > @@ -418,7 +418,10 @@ typedef struct libusb_bos_descriptor { > uint8_t bLength; > uint8_t bDescriptorType; > uint16_t wTotalLength; > - uint8_t bNumDeviceCapabilities; > +#ifndef bNumDeviceCapabilities > +#define bNumDeviceCapabilities bNumDeviceCaps > +#endif > + uint8_t bNumDeviceCaps; > struct libusb_usb_2_0_device_capability_descriptor > *usb_2_0_ext_cap; > struct libusb_ss_usb_device_capability_descriptor *ss_usb_cap; > struct libusb_bos_dev_capability_descriptor **dev_capability; > diff --git a/lib/libusb/libusb10_desc.c b/lib/libusb/libusb10_desc.c > index 3e36009cbb3a..5f4c46740688 100644 > --- a/lib/libusb/libusb10_desc.c > +++ b/lib/libusb/libusb10_desc.c > @@ -470,10 +470,11 @@ libusb_parse_bos_descriptor(const void *buf, int len, > ptr->bDescriptorType = dtype; > ptr->wTotalLength = ((const uint8_t *)buf)[2] | > (((const uint8_t *)buf)[3] << 8); > - ptr->bNumDeviceCapabilities = ((const uint8_t > *)buf)[4]; > + ptr->bNumDeviceCaps = ((const uint8_t *)buf)[4]; > ptr->usb_2_0_ext_cap = NULL; > ptr->ss_usb_cap = NULL; > - ptr->dev_capability = > calloc(ptr->bNumDeviceCapabilities, sizeof(void *)); > + ptr->dev_capability = calloc(ptr->bNumDeviceCaps, > + sizeof(void *)); > if (ptr->dev_capability == NULL) { > free(ptr); > return (LIBUSB_ERROR_NO_MEM); > @@ -485,7 +486,7 @@ libusb_parse_bos_descriptor(const void *buf, int len, > if (dlen >= 3 && > ptr != NULL && > dtype == LIBUSB_DT_DEVICE_CAPABILITY) { > - if (index != ptr->bNumDeviceCapabilities) { > + if (index != ptr->bNumDeviceCaps) { > ptr->dev_capability[index] = malloc(dlen); > if (ptr->dev_capability[index] == NULL) { > libusb_free_bos_descriptor(ptr); > @@ -542,7 +543,7 @@ libusb_parse_bos_descriptor(const void *buf, int len, > } > > if (ptr != NULL) { > - ptr->bNumDeviceCapabilities = index; > + ptr->bNumDeviceCaps = index; > return (0); /* success */ > } > > @@ -557,7 +558,7 @@ libusb_free_bos_descriptor(struct > libusb_bos_descriptor *bos) > if (bos == NULL) > return; > > - for (i = 0; i != bos->bNumDeviceCapabilities; i++) > + for (i = 0; i != bos->bNumDeviceCaps; i++) > free(bos->dev_capability[i]); > free(bos->dev_capability); > free(bos); > diff --git a/lib/libusb/libusb20_desc.h b/lib/libusb/libusb20_desc.h > index 017148a34b1c..0f7c9294ebc8 100644 > --- a/lib/libusb/libusb20_desc.h > +++ b/lib/libusb/libusb20_desc.h > @@ -298,11 +298,15 @@ LIBUSB20_MAKE_STRUCT(LIBUSB20_USB_20_DEVCAP_DESC); > > LIBUSB20_MAKE_STRUCT(LIBUSB20_SS_USB_DEVCAP_DESC); > > +#ifndef bNumDeviceCapabilities > +#define bNumDeviceCapabilities bNumDeviceCaps > +#endif > + > #define LIBUSB20_BOS_DESCRIPTOR(m,n) \ > m(n, UINT8_T, bLength, ) \ > m(n, UINT8_T, bDescriptorType, ) \ > m(n, UINT16_T, wTotalLength, ) \ > - m(n, UINT8_T, bNumDeviceCapabilities, ) \ > + m(n, UINT8_T, bNumDeviceCaps, ) \ > > LIBUSB20_MAKE_STRUCT(LIBUSB20_BOS_DESCRIPTOR); > > --000000000000124ea00639702305 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
hi! Thanks for this!

Could w= e possibly wrap stuff like these compat macros in a #define that we can und= efine? So we can make sure no new code shows up that uses the "old&quo= t; paths?

eg LIBUSB10_NO_BACKWARDS_COMPAT / LIBUSB= 20_NO_BACKWARDS_COMPAT ?

Thanks!



-adrian

On Tue, 8 Jul 2025 at 08:12, ShengYi Hung <aokblast@freebsd.org> wrote:
The branch main has been update= d by aokblast:

URL: https://cgit.= FreeBSD.org/src/commit/?id=3Df84a0da4e0608a970c775f3d605f8de2b0b8d322
commit f84a0da4e0608a970c775f3d605f8de2b0b8d322
Author:=C2=A0 =C2=A0 =C2=A0ShengYi Hung <aokblast@FreeBSD.org>
AuthorDate: 2025-06-07 19:43:15 +0000
Commit:=C2=A0 =C2=A0 =C2=A0ShengYi Hung <aokblast@FreeBSD.org>
CommitDate: 2025-07-08 15:11:41 +0000

=C2=A0 =C2=A0 libusb: rename bNumDeviceCapabilities to bNumDeviceCaps for c= ompatibility with libusb

=C2=A0 =C2=A0 THe member bNumDeviceCapabilities is referred to as bNumDevic= eCaps in
=C2=A0 =C2=A0 the upstream libusb project.

=C2=A0 =C2=A0 To improve compatibility, we are renaming the member accordin= gly.

=C2=A0 =C2=A0 For backward compatibility, a mocro will be defined to map =C2=A0 =C2=A0 bNumDeviceCapabilities to bNumDeviceCaps.

=C2=A0 =C2=A0 See: h= ttps://github.com/libusb/libusb/commit/02ebafc85d3f219842cbabaf78abc8100b66= 56e5

=C2=A0 =C2=A0 Reviewed by:=C2=A0 =C2=A0 kevans
=C2=A0 =C2=A0 Approved by:=C2=A0 =C2=A0 markj (mentor)
=C2=A0 =C2=A0 MFC after:=C2=A0 =C2=A0 =C2=A0 2 weeks
=C2=A0 =C2=A0 Sponsored by:=C2=A0 =C2=A0FreeBSD Foundation
=C2=A0 =C2=A0 Differential Revision: https://reviews.freebsd.org/D= 50740
---
=C2=A0lib/libusb/libusb.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 5 ++++-
=C2=A0lib/libusb/libusb10_desc.c | 11 ++++++-----
=C2=A0lib/libusb/libusb20_desc.h |=C2=A0 6 +++++-
=C2=A03 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h
index 0aad29aa4ecc..491af3d0a5ec 100644
--- a/lib/libusb/libusb.h
+++ b/lib/libusb/libusb.h
@@ -418,7 +418,10 @@ typedef struct libusb_bos_descriptor {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 uint8_t bLength;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 uint8_t bDescriptorType;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 uint16_t wTotalLength;
-=C2=A0 =C2=A0 =C2=A0 =C2=A0uint8_t bNumDeviceCapabilities;
+#ifndef bNumDeviceCapabilities
+#define bNumDeviceCapabilities bNumDeviceCaps
+#endif
+=C2=A0 =C2=A0 =C2=A0 =C2=A0uint8_t bNumDeviceCaps;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 struct libusb_usb_2_0_device_capability_descrip= tor *usb_2_0_ext_cap;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 struct libusb_ss_usb_device_capability_descript= or *ss_usb_cap;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 struct libusb_bos_dev_capability_descriptor **d= ev_capability;
diff --git a/lib/libusb/libusb10_desc.c b/lib/libusb/libusb10_desc.c
index 3e36009cbb3a..5f4c46740688 100644
--- a/lib/libusb/libusb10_desc.c
+++ b/lib/libusb/libusb10_desc.c
@@ -470,10 +470,11 @@ libusb_parse_bos_descriptor(const void *buf, int len,=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 ptr->bDescriptorType =3D dtype;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 ptr->wTotalLength =3D ((const uint8_t *)buf)[2] |
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 (((const uint8_t *)buf)[3] << 8);
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0ptr->bNumDeviceCapabilities =3D ((const uint8_t *)buf)[4];
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0ptr->bNumDeviceCaps =3D ((const uint8_t *)buf)[4];
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 ptr->usb_2_0_ext_cap =3D NULL;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 ptr->ss_usb_cap =3D NULL;
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0ptr->dev_capability =3D calloc(ptr->bNumDeviceCapabilities,= sizeof(void *));
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0ptr->dev_capability =3D calloc(ptr->bNumDeviceCaps,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0sizeof(void *));
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 if (ptr->dev_capability =3D=3D NULL) {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 free(ptr);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return (LIBUSB_ERROR_NO_MEM);
@@ -485,7 +486,7 @@ libusb_parse_bos_descriptor(const void *buf, int len, =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (dlen >=3D 3 = &&
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ptr != =3D NULL &&
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 dtype= =3D=3D LIBUSB_DT_DEVICE_CAPABILITY) {
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0if (index !=3D ptr->bNumDeviceCapabilities) {
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0if (index !=3D ptr->bNumDeviceCaps) {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ptr->dev_capability[index] =3D ma= lloc(dlen);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (ptr->dev_capability[index] = =3D=3D NULL) {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 libusb_f= ree_bos_descriptor(ptr);
@@ -542,7 +543,7 @@ libusb_parse_bos_descriptor(const void *buf, int len, =C2=A0 =C2=A0 =C2=A0 =C2=A0 }

=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (ptr !=3D NULL) {
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ptr->bNumDeviceC= apabilities =3D index;
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ptr->bNumDeviceC= aps =3D index;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return (0);=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* success */
=C2=A0 =C2=A0 =C2=A0 =C2=A0 }

@@ -557,7 +558,7 @@ libusb_free_bos_descriptor(struct libusb_bos_descriptor= *bos)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (bos =3D=3D NULL)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;

-=C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i !=3D bos->bNumDeviceCapabili= ties; i++)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i !=3D bos->bNumDeviceCaps; i+= +)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 free(bos->dev_ca= pability[i]);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 free(bos->dev_capability);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 free(bos);
diff --git a/lib/libusb/libusb20_desc.h b/lib/libusb/libusb20_desc.h
index 017148a34b1c..0f7c9294ebc8 100644
--- a/lib/libusb/libusb20_desc.h
+++ b/lib/libusb/libusb20_desc.h
@@ -298,11 +298,15 @@ LIBUSB20_MAKE_STRUCT(LIBUSB20_USB_20_DEVCAP_DESC);
=C2=A0LIBUSB20_MAKE_STRUCT(LIBUSB20_SS_USB_DEVCAP_DESC);

+#ifndef bNumDeviceCapabilities
+#define bNumDeviceCapabilities bNumDeviceCaps
+#endif
+
=C2=A0#define=C2=A0 =C2=A0 =C2=A0 =C2=A0 LIBUSB20_BOS_DESCRIPTOR(m,n) \
=C2=A0 =C2=A0m(n, UINT8_T,=C2=A0 bLength, ) \
=C2=A0 =C2=A0m(n, UINT8_T,=C2=A0 bDescriptorType, ) \
=C2=A0 =C2=A0m(n, UINT16_T, wTotalLength, ) \
-=C2=A0 m(n, UINT8_T,=C2=A0 bNumDeviceCapabilities, ) \
+=C2=A0 m(n, UINT8_T,=C2=A0 bNumDeviceCaps, ) \

=C2=A0LIBUSB20_MAKE_STRUCT(LIBUSB20_BOS_DESCRIPTOR);

--000000000000124ea00639702305--