aboutsummaryrefslogtreecommitdiffstats
path: root/usbdrv/usbdrv.c
diff options
context:
space:
mode:
authorChristian Starkjohann <cs+github@obdev.at>2008-07-01 15:43:21 +0000
committerChristian Starkjohann <cs+github@obdev.at>2008-07-01 15:43:21 +0000
commit733dc58a94ac06d124adcd6cbf11a3c97caf10da (patch)
tree5bebb00a301a334e83b364f49acface6a1380f48 /usbdrv/usbdrv.c
parent5280c7cda766ba100065de82407e8414d13e8e9f (diff)
downloadv-usb-733dc58a94ac06d124adcd6cbf11a3c97caf10da.tar.gz
v-usb-733dc58a94ac06d124adcd6cbf11a3c97caf10da.tar.bz2
v-usb-733dc58a94ac06d124adcd6cbf11a3c97caf10da.zip
- Fixed bug in long transfer configuration
Diffstat (limited to 'usbdrv/usbdrv.c')
-rw-r--r--usbdrv/usbdrv.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usbdrv/usbdrv.c b/usbdrv/usbdrv.c
index 4917078..e6c8c19 100644
--- a/usbdrv/usbdrv.c
+++ b/usbdrv/usbdrv.c
@@ -449,9 +449,13 @@ usbRequest_t *rq = (void *)data;
}
#if USB_CFG_IMPLEMENT_FN_READ || USB_CFG_IMPLEMENT_FN_WRITE
if(replyLen == USB_NO_MSG){ /* use user-supplied read/write function */
- /* do some conditioning on replyLen */
+ /* do some conditioning on replyLen, but on IN transfers only */
if((rq->bmRequestType & USBRQ_DIR_MASK) != USBRQ_DIR_HOST_TO_DEVICE){
- replyLen = rq->wLength.bytes[0]; /* IN transfers only */
+ if(sizeof(replyLen) < sizeof(rq->wLength.word)){ /* help compiler with optimizing */
+ replyLen = rq->wLength.bytes[0];
+ }else{
+ replyLen = rq->wLength.word;
+ }
}
usbMsgFlags = USB_FLG_USE_USER_RW;
}else /* The 'else' prevents that we limit a replyLen of USB_NO_MSG to the maximum transfer len. */