fix: double free shouldn't happen now

This commit is contained in:
iceman1001 2017-09-26 22:22:23 +02:00
commit 08bf63c748
3 changed files with 12 additions and 10 deletions

View file

@ -373,10 +373,6 @@ int main(int argc, char* argv[]) {
main_loop(script_cmds_file, usb_present);
#endif
// Clean up the port
if (usb_present)
uart_close(sp);
// clean up mutex
pthread_mutex_destroy(&print_lock);

View file

@ -128,6 +128,10 @@ serial_port uart_open(const char* pcPortName)
}
void uart_close(const serial_port sp) {
if (!sp) return;
if (sp == INVALID_SERIAL_PORT) return;
if (sp == CLAIMED_SERIAL_PORT) return;
serial_port_unix* spu = (serial_port_unix*)sp;
tcflush(spu->fd, TCIOFLUSH);
tcsetattr(spu->fd, TCSANOW, &(spu->tiOld));

View file

@ -108,6 +108,8 @@ serial_port uart_open(const char* pcPortName) {
void uart_close(const serial_port sp) {
if (!sp) return;
if (sp == INVALID_SERIAL_PORT) return;
if (sp == CLAIMED_SERIAL_PORT) return;
if (((serial_port_windows*)sp)->hPort != NULL )
CloseHandle(((serial_port_windows*)sp)->hPort);
free(sp);