diff options
Diffstat (limited to 'gdb/rdi-share')
-rw-r--r-- | gdb/rdi-share/devsw.c | 4 | ||||
-rw-r--r-- | gdb/rdi-share/unixcomm.c | 13 |
2 files changed, 14 insertions, 3 deletions
diff --git a/gdb/rdi-share/devsw.c b/gdb/rdi-share/devsw.c index 590b812..7fa142b 100644 --- a/gdb/rdi-share/devsw.c +++ b/gdb/rdi-share/devsw.c @@ -265,6 +265,10 @@ AdpErrs DevSW_Close(const DeviceDescr *device, const DevChanID type) pk = Adp_removeFromQueue(&(ds->ds_readqueue[type]))) DevSW_FreePacket(pk); + /* Free memory */ + free ((char *) device->SwitcherState); + device->SwitcherState = 0x0; + /* that's all */ return adp_ok; } diff --git a/gdb/rdi-share/unixcomm.c b/gdb/rdi-share/unixcomm.c index 7cb55e6..400d1fd 100644 --- a/gdb/rdi-share/unixcomm.c +++ b/gdb/rdi-share/unixcomm.c @@ -88,11 +88,14 @@ #define PARPORT2 "/dev/par1" #endif -#ifdef _WIN32 +#define SERIAL_PREFIX "/dev/tty" +#if defined(_WIN32) || defined (__CYGWIN32__) #define SERPORT1 "com1" #define SERPORT2 "com2" #define PARPORT1 "lpt1" #define PARPORT2 "lpt2" +#undef SERIAL_PREFIX +#define SERIAL_PREFIX "com" #endif /* @@ -121,7 +124,11 @@ extern const char *Unix_MatchValidSerialDevice(const char *name) */ /* Accept /dev/tty* where * is limited */ - if (strlen(name) == strlen(SERPORT1) && strncmp(name, "/dev/tty", 8) == 0) return name; + if (strlen(name) == strlen(SERPORT1) + && strncmp(name, SERIAL_PREFIX, strlen (SERIAL_PREFIX)) == 0) + { + return name; + } /* Accept "1" or "2" or "S" - S is equivalent to "1" */ if (strcmp(name, "1") == 0 || @@ -224,7 +231,7 @@ extern int Unix_IsSerialInUse(void) extern int Unix_OpenSerial(const char *name) { -#if defined(BSD) +#if defined(BSD) || defined(__CYGWIN32__) serpfd = open(name, O_RDWR); #else serpfd = open(name, O_RDWR | O_NONBLOCK); |