diff --git a/libusb/descriptor.c b/libusb/descriptor.c
index 74d6de5..0b0e314 100644
--- a/libusb/descriptor.c
+++ b/libusb/descriptor.c
@@ -1174,7 +1174,7 @@ int API_EXPORTED libusb_get_string_descriptor_ascii(libusb_device_handle *dev_ha
 		return LIBUSB_ERROR_IO;
 
 	if (tbuf[0] > r)
-		return LIBUSB_ERROR_IO;
+		tbuf[0] = r;
 
 	di = 0;
 	for (si = 2; si < tbuf[0]; si += 2) {
-- 
2.17.0