diff --git a/examples/testlibusb.c b/examples/testlibusb.c
index 52bf501..ba00f90 100755
--- a/examples/testlibusb.c
+++ b/examples/testlibusb.c
@@ -261,6 +261,7 @@
 #else
 static int test_wrapped_device(const char *device_name)
 {
+	(void)device_name;
 	printf("Testing wrapped devices is not supported on your platform\n");
 	return 1;
 }
diff --git a/libusb/core.c b/libusb/core.c
index a6b093b..07d459c 100644
--- a/libusb/core.c
+++ b/libusb/core.c
@@ -2524,6 +2524,7 @@
 #if defined(__ANDROID__)
 	int priority;
 	switch (level) {
+	case LIBUSB_LOG_LEVEL_NONE: return;	/* Impossible, but keeps compiler happy */
 	case LIBUSB_LOG_LEVEL_ERROR: priority = ANDROID_LOG_ERROR; break;
 	case LIBUSB_LOG_LEVEL_WARNING: priority = ANDROID_LOG_WARN; break;
 	case LIBUSB_LOG_LEVEL_INFO: priority = ANDROID_LOG_INFO; break;
@@ -2537,6 +2538,7 @@
 #elif defined(HAVE_SYSLOG)
 	int syslog_level;
 	switch (level) {
+	case LIBUSB_LOG_LEVEL_NONE: return;	/* Impossible, but keeps compiler happy */
 	case LIBUSB_LOG_LEVEL_ERROR: syslog_level = LOG_ERR; break;
 	case LIBUSB_LOG_LEVEL_WARNING: syslog_level = LOG_WARNING; break;
 	case LIBUSB_LOG_LEVEL_INFO: syslog_level = LOG_INFO; break;
@@ -2585,6 +2587,8 @@
 #endif
 
 	switch (level) {
+	case LIBUSB_LOG_LEVEL_NONE:	/* Impossible, but keeps compiler happy */
+		return;
 	case LIBUSB_LOG_LEVEL_ERROR:
 		prefix = "error";
 		break;
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c
index f3c188e..fb2ed53 100644
--- a/libusb/os/linux_usbfs.c
+++ b/libusb/os/linux_usbfs.c
@@ -429,16 +429,17 @@
 	UNUSED(ctx);
 	UNUSED(ap);
 
-	switch (option) {
 #ifdef __ANDROID__
-	case LIBUSB_OPTION_WEAK_AUTHORITY:
+	if (option == LIBUSB_OPTION_WEAK_AUTHORITY) {
 		usbi_dbg("set libusb has weak authority");
 		weak_authority = 1;
 		return LIBUSB_SUCCESS;
-#endif
-	default:
-		return LIBUSB_ERROR_NOT_SUPPORTED;
 	}
+#else
+	UNUSED(option);
+#endif
+
+	return LIBUSB_ERROR_NOT_SUPPORTED;
 }
 
 static int linux_scan_devices(struct libusb_context *ctx)
@@ -676,7 +677,7 @@
 	uint8_t *buffer;
 	size_t remaining;
 
-	device_desc = (struct usbi_device_descriptor *)priv->descriptors;
+	device_desc = priv->descriptors;
 	num_configs = device_desc->bNumConfigurations;
 
 	if (num_configs == 0)
@@ -686,7 +687,7 @@
 	if (!priv->config_descriptors)
 		return LIBUSB_ERROR_NO_MEM;
 
-	buffer = priv->descriptors + LIBUSB_DT_DEVICE_SIZE;
+	buffer = (uint8_t *)priv->descriptors + LIBUSB_DT_DEVICE_SIZE;
 	remaining = priv->descriptors_len - LIBUSB_DT_DEVICE_SIZE;
 
 	for (idx = 0; idx < num_configs; idx++) {
@@ -935,19 +936,21 @@
 
 	alloc_len = 0;
 	do {
-		alloc_len += 256;
+		const size_t desc_read_length = 256;
+		uint8_t *read_ptr;
+
+		alloc_len += desc_read_length;
 		priv->descriptors = usbi_reallocf(priv->descriptors, alloc_len);
 		if (!priv->descriptors) {
 			if (fd != wrapped_fd)
 				close(fd);
 			return LIBUSB_ERROR_NO_MEM;
 		}
+		read_ptr = (uint8_t *)priv->descriptors + priv->descriptors_len;
 		/* usbfs has holes in the file */
 		if (!sysfs_dir)
-			memset(priv->descriptors + priv->descriptors_len,
-			       0, alloc_len - priv->descriptors_len);
-		nb = read(fd, priv->descriptors + priv->descriptors_len,
-			  alloc_len - priv->descriptors_len);
+			memset(read_ptr, 0, desc_read_length);
+		nb = read(fd, read_ptr, desc_read_length);
 		if (nb < 0) {
 			usbi_err(ctx, "read descriptor failed, errno=%d", errno);
 			if (fd != wrapped_fd)
diff --git a/libusb/os/windows_common.c b/libusb/os/windows_common.c
index 8dc0e0a..f25c340 100644
--- a/libusb/os/windows_common.c
+++ b/libusb/os/windows_common.c
@@ -592,19 +592,17 @@
 
 	UNUSED(ap);
 
-	switch ((int)option) {
-	case LIBUSB_OPTION_USE_USBDK:
-		if (usbdk_available) {
-			usbi_dbg("switching context %p to use UsbDk backend", ctx);
-			priv->backend = &usbdk_backend;
-		} else {
+	if (option == LIBUSB_OPTION_USE_USBDK) {
+		if (!usbdk_available) {
 			usbi_err(ctx, "UsbDk backend not available");
 			return LIBUSB_ERROR_NOT_FOUND;
 		}
+		usbi_dbg("switching context %p to use UsbDk backend", ctx);
+		priv->backend = &usbdk_backend;
 		return LIBUSB_SUCCESS;
-	default:
-		return LIBUSB_ERROR_NOT_SUPPORTED;
 	}
+
+	return LIBUSB_ERROR_NOT_SUPPORTED;
 }
 
 static int windows_get_device_list(struct libusb_context *ctx, struct discovered_devs **discdevs)
diff --git a/libusb/os/windows_winusb.c b/libusb/os/windows_winusb.c
index 0f857ed..e0d7b1f 100644
--- a/libusb/os/windows_winusb.c
+++ b/libusb/os/windows_winusb.c
@@ -982,14 +982,18 @@
 		config_desc_length = ROOT_HUB_HS_CONFIG_DESC_LENGTH;
 		ep_interval = 0x0c;	// 256ms
 		break;
-	default:
-		// The default case means absolutely no information about this root hub was
-		// determined. There is not much choice than to be pessimistic and label this
-		// as a full-speed device.
+	case LIBUSB_SPEED_LOW:		// Not used, but keeps compiler happy
+	case LIBUSB_SPEED_UNKNOWN:
+		// This case means absolutely no information about this root hub was determined.
+		// There is not much choice than to be pessimistic and label this as a
+		// full-speed device.
 		speed = LIBUSB_SPEED_FULL;
+		// fallthrough
+	case LIBUSB_SPEED_FULL:
 		dev->device_descriptor.bcdUSB = 0x0110;
 		config_desc_length = ROOT_HUB_FS_CONFIG_DESC_LENGTH;
 		ep_interval = 0xff;	// 255ms
+		break;
 	}
 
 	if (speed >= LIBUSB_SPEED_SUPER) {
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index 9c3a26e..d853d67 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11572
+#define LIBUSB_NANO 11573
