libusb.h: Ensure that struct libusb_control_transfer is not padded

There is nothing explicitly preventing the compiler from adding any sort
of padding to the libusb_control_transfer structure. It does not seem
that any sane compiler would do so, but there is library functionality
that depends on this not happening. Address this by explicitly
instructing the compiler to pack the structure.

Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
diff --git a/doc/doxygen.cfg.in b/doc/doxygen.cfg.in
index 504d41c..f4ccf1e 100644
--- a/doc/doxygen.cfg.in
+++ b/doc/doxygen.cfg.in
@@ -2113,7 +2113,8 @@
 
 PREDEFINED             = API_EXPORTED= \
                          DEFAULT_VISIBILITY= \
-                         LIBUSB_CALL=
+                         LIBUSB_CALL= \
+                         LIBUSB_PACKED=
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
 # tag can be used to specify a list of macro names that should be expanded. The
diff --git a/libusb/libusb.h b/libusb/libusb.h
index 058569e..360f654 100644
--- a/libusb/libusb.h
+++ b/libusb/libusb.h
@@ -72,6 +72,12 @@
 #define LIBUSB_DEPRECATED_FOR(f)
 #endif /* __GNUC__ */
 
+#if defined(__GNUC__)
+#define LIBUSB_PACKED __attribute__ ((packed))
+#else
+#define LIBUSB_PACKED
+#endif /* __GNUC__ */
+
 /** \def LIBUSB_CALL
  * \ingroup libusb_misc
  * libusb's Windows calling convention.
@@ -895,6 +901,9 @@
 
 /** \ingroup libusb_asyncio
  * Setup packet for control transfers. */
+#if defined(_MSC_VER)
+#pragma pack(push, 1)
+#endif
 struct libusb_control_setup {
 	/** Request type. Bits 0:4 determine recipient, see
 	 * \ref libusb_request_recipient. Bits 5:6 determine type, see
@@ -919,7 +928,10 @@
 
 	/** Number of bytes to transfer */
 	uint16_t wLength;
-};
+} LIBUSB_PACKED;
+#if defined(_MSC_VER)
+#pragma pack(pop)
+#endif
 
 #define LIBUSB_CONTROL_SETUP_SIZE (sizeof(struct libusb_control_setup))
 
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index 0e6fc9c..459f6be 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11496
+#define LIBUSB_NANO 11497