diff -r 48bff18fc546 -r 5482b98e82a3 drivers/can_peak_win32/can_peak_win32.c --- a/drivers/can_peak_win32/can_peak_win32.c Wed Jun 16 21:29:39 2010 +0200 +++ b/drivers/can_peak_win32/can_peak_win32.c Fri Sep 10 13:43:17 2010 +0200 @@ -100,11 +100,12 @@ } //Create the Event for the first board - hEvent2 = CreateEvent(NULL, // lpEventAttributes - FALSE, // bManualReset - FALSE, // bInitialState - ""); // lpName - + if(hEvent2 != NULL){ + hEvent2 = CreateEvent(NULL, // lpEventAttributes + FALSE, // bManualReset + FALSE, // bInitialState + ""); // lpName + } //Set Event Handle for CANReadExt CAN2_SetRcvEvent(hEvent2); } @@ -118,10 +119,12 @@ return 0; } //Create the Event for the first board - hEvent1 = CreateEvent(NULL, // lpEventAttributes - FALSE, // bManualReset - FALSE, // bInitialState - ""); // lpName + if(hEvent1 != NULL){ + hEvent1 = CreateEvent(NULL, // lpEventAttributes + FALSE, // bManualReset + FALSE, // bInitialState + ""); // lpName + } //Set Event Handle for CANReadExt CAN_SetRcvEvent(hEvent1); } @@ -308,21 +311,31 @@ int canClose_driver (CAN_HANDLE fd0) { #ifdef PCAN2_HEADER_ - // if not the first handler - if(second_board == (s_BOARD *)fd0) - { - CAN2_SetRcvEvent(NULL); - CAN2_Close (); - SetEvent(hEvent2); - second_board = (s_BOARD *)NULL; - }else -#endif - if(first_board == (s_BOARD *)fd0) - { - CAN_SetRcvEvent(NULL); - CAN_Close (); - SetEvent(hEvent1); - first_board = (s_BOARD *)NULL; - } - return 0; -} + // if not the first handler + if(second_board == (s_BOARD *)fd0) + { + CAN2_SetRcvEvent(NULL); + CAN2_Close (); + if(hEvent2) + { + SetEvent(hEvent2); + CloseHandle(hEvent2); + hEvent2 = NULL; + } + second_board = (s_BOARD *)NULL; + }else +#endif + if(first_board == (s_BOARD *)fd0) + { + CAN_SetRcvEvent(NULL); + CAN_Close (); + if(hEvent1) + { + SetEvent(hEvent1); + CloseHandle(hEvent1); + hEvent1 = NULL; + } + first_board = (s_BOARD *)NULL; + } + return 0; +}