summaryrefslogtreecommitdiff
path: root/components/drivers
diff options
context:
space:
mode:
authorZYH <[email protected]>2018-01-17 21:12:21 +0800
committerZYH <[email protected]>2018-01-17 21:12:21 +0800
commita9f182140cb274a91bcadd28c333e7301a60eb5c (patch)
tree8cfb500acf3ae66cf58b545ae2919a9285c799d2 /components/drivers
parent627a90c2d06397291f1ffbe0b230f2c48cdc1e9e (diff)
[Components][Drivers][USB]fix memory leak
修复一个 bug 该bug曾导致在设备不断电但主机重新枚举设备的情况下会导致内存泄漏并无法接收数据
Diffstat (limited to 'components/drivers')
-rw-r--r--components/drivers/usb/usbdevice/class/hid.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/components/drivers/usb/usbdevice/class/hid.c b/components/drivers/usb/usbdevice/class/hid.c
index 11a8e39bfe..0b44456b8f 100644
--- a/components/drivers/usb/usbdevice/class/hid.c
+++ b/components/drivers/usb/usbdevice/class/hid.c
@@ -486,7 +486,10 @@ static rt_err_t _function_enable(ufunction_t func)
//
// _vcom_reset_state(func);
//
- data->ep_out->buffer = rt_malloc(HID_RX_BUFSIZE);
+ if(data->ep_out->buffer == RT_NULL)
+ {
+ data->ep_out->buffer = rt_malloc(HID_RX_BUFSIZE);
+ }
data->ep_out->request.buffer = data->ep_out->buffer;
data->ep_out->request.size = EP_MAXPACKET(data->ep_out);
data->ep_out->request.req_type = UIO_REQUEST_READ_BEST;