diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.c b/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.c
index f7935cad0377e1e9770d7e9531df1a6cfbed5a9a..bd649419ac71ccc42a62e05ac5d52c8b27544a74 100644
--- a/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.c
+++ b/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.c
@@ -183,8 +183,6 @@ static uint32_t ServiceDiscovery_GetDataElementSize(const void** DataElementHead
 	uint8_t SizeIndex = (*((uint8_t*)*DataElementHeader) & 0x07);
 	*DataElementHeader += sizeof(uint8_t);
 	
-	*ElementHeaderSize = 1;
-	
 	uint32_t ElementValue;
 	
 	switch (SizeIndex)
@@ -205,7 +203,8 @@ static uint32_t ServiceDiscovery_GetDataElementSize(const void** DataElementHead
 			*ElementHeaderSize  = (1 + sizeof(uint32_t));
 			break;
 		default:
-			ElementValue = (1UL << SizeIndex);
+			ElementValue = (1 << SizeIndex);
+			*ElementHeaderSize = 1;
 			break;
 	}
 	
diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
index 7edd3ce6a6aeee656ae0f726f8249f561732eb01..43df5f61a10a0a193394283eadeadb85fc473575 100644
--- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
+++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
@@ -233,15 +233,15 @@ ISR(USB_GEN_vect, ISR_BLOCK)
 #if defined(INTERRUPT_CONTROL_ENDPOINT) && defined(USB_CAN_BE_DEVICE)
 ISR(USB_COM_vect, ISR_BLOCK)
 {
-	uint8_t PrevSelectedEndpoint = Endpoint_GetCurrentEndpoint();
+	uint8_t PrevSelectedEndpoint = Endpoint_GetCurrentEndpoint(); 
 
+	Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
 	USB_INT_Disable(USB_INT_RXSTPI);
 	sei();
+
 	USB_USBTask();
-	USB_INT_Enable(USB_INT_RXSTPI);
 
-	USB_INT_Clear(USB_INT_RXSTPI);
-	
+	USB_INT_Enable(USB_INT_RXSTPI);
 	Endpoint_SelectEndpoint(PrevSelectedEndpoint);
 }
 #endif