Changeset 38db58f in rtems
- Timestamp:
- 10/11/01 21:21:43 (22 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- ba71076
- Parents:
- c682b89
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/exec/libcsupport/src/termios.c
rc682b89 r38db58f 199 199 tty->tty_rcv.sw_arg = NULL; 200 200 tty->tty_rcvwakeup = 0; 201 201 202 /* 202 203 * link tty 203 204 */ 204 if (rtems_termios_ttyHead) 205 tty->forw = rtems_termios_ttyHead; 206 tty->back = NULL; 207 if (rtems_termios_ttyHead != NULL) 205 208 rtems_termios_ttyHead->back = tty; 206 tty->forw = rtems_termios_ttyHead;207 209 rtems_termios_ttyHead = tty; 208 210 if (rtems_termios_ttyTail == NULL) 209 211 rtems_termios_ttyTail = tty; 212 210 213 tty->minor = minor; 211 214 tty->major = major; … … 412 415 if (tty->device.lastClose) 413 416 (*tty->device.lastClose)(tty->major, tty->minor, arg); 414 if (tty->forw == NULL) 417 if (tty->forw == NULL) { 415 418 rtems_termios_ttyTail = tty->back; 416 else 419 if ( rtems_termios_ttyTail != NULL ) { 420 rtems_termios_ttyTail->forw = NULL; 421 } 422 } 423 else { 417 424 tty->forw->back = tty->back; 418 if (tty->back == NULL) 425 } 426 if (tty->back == NULL) { 419 427 rtems_termios_ttyHead = tty->forw; 420 else 428 if ( rtems_termios_ttyHead != NULL ) { 429 rtems_termios_ttyHead->back = NULL; 430 } 431 } 432 else { 421 433 tty->back->forw = tty->forw; 434 } 422 435 rtems_semaphore_delete (tty->isem); 423 436 rtems_semaphore_delete (tty->osem); … … 426 439 (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)) 427 440 rtems_semaphore_delete (tty->rawInBuf.Semaphore); 441 free (tty->rawInBuf.theBuf); 442 free (tty->rawOutBuf.theBuf); 443 free (tty->cbuf); 428 444 free (tty); 429 445 } -
c/src/lib/ChangeLog
rc682b89 r38db58f 1 2001-10-11 Mike Siers <mikes@poliac.com> 2 3 * libc/termios.c: Fixed a memory leak in the termios 4 software. Basically the tty open function was allocating an input 5 raw buffer, an output raw buffer, and a cooked buffer that were 6 not getting released. I have attached a patch for the latest 7 snapshot. The patch also has a fix to ensure the tty link list 8 is updated correctly when a tty is closed. 9 1 10 2001-10-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de> 2 11 -
c/src/lib/libc/termios.c
rc682b89 r38db58f 199 199 tty->tty_rcv.sw_arg = NULL; 200 200 tty->tty_rcvwakeup = 0; 201 201 202 /* 202 203 * link tty 203 204 */ 204 if (rtems_termios_ttyHead) 205 tty->forw = rtems_termios_ttyHead; 206 tty->back = NULL; 207 if (rtems_termios_ttyHead != NULL) 205 208 rtems_termios_ttyHead->back = tty; 206 tty->forw = rtems_termios_ttyHead;207 209 rtems_termios_ttyHead = tty; 208 210 if (rtems_termios_ttyTail == NULL) 209 211 rtems_termios_ttyTail = tty; 212 210 213 tty->minor = minor; 211 214 tty->major = major; … … 412 415 if (tty->device.lastClose) 413 416 (*tty->device.lastClose)(tty->major, tty->minor, arg); 414 if (tty->forw == NULL) 417 if (tty->forw == NULL) { 415 418 rtems_termios_ttyTail = tty->back; 416 else 419 if ( rtems_termios_ttyTail != NULL ) { 420 rtems_termios_ttyTail->forw = NULL; 421 } 422 } 423 else { 417 424 tty->forw->back = tty->back; 418 if (tty->back == NULL) 425 } 426 if (tty->back == NULL) { 419 427 rtems_termios_ttyHead = tty->forw; 420 else 428 if ( rtems_termios_ttyHead != NULL ) { 429 rtems_termios_ttyHead->back = NULL; 430 } 431 } 432 else { 421 433 tty->back->forw = tty->forw; 434 } 422 435 rtems_semaphore_delete (tty->isem); 423 436 rtems_semaphore_delete (tty->osem); … … 426 439 (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)) 427 440 rtems_semaphore_delete (tty->rawInBuf.Semaphore); 441 free (tty->rawInBuf.theBuf); 442 free (tty->rawOutBuf.theBuf); 443 free (tty->cbuf); 428 444 free (tty); 429 445 } -
cpukit/libcsupport/src/termios.c
rc682b89 r38db58f 199 199 tty->tty_rcv.sw_arg = NULL; 200 200 tty->tty_rcvwakeup = 0; 201 201 202 /* 202 203 * link tty 203 204 */ 204 if (rtems_termios_ttyHead) 205 tty->forw = rtems_termios_ttyHead; 206 tty->back = NULL; 207 if (rtems_termios_ttyHead != NULL) 205 208 rtems_termios_ttyHead->back = tty; 206 tty->forw = rtems_termios_ttyHead;207 209 rtems_termios_ttyHead = tty; 208 210 if (rtems_termios_ttyTail == NULL) 209 211 rtems_termios_ttyTail = tty; 212 210 213 tty->minor = minor; 211 214 tty->major = major; … … 412 415 if (tty->device.lastClose) 413 416 (*tty->device.lastClose)(tty->major, tty->minor, arg); 414 if (tty->forw == NULL) 417 if (tty->forw == NULL) { 415 418 rtems_termios_ttyTail = tty->back; 416 else 419 if ( rtems_termios_ttyTail != NULL ) { 420 rtems_termios_ttyTail->forw = NULL; 421 } 422 } 423 else { 417 424 tty->forw->back = tty->back; 418 if (tty->back == NULL) 425 } 426 if (tty->back == NULL) { 419 427 rtems_termios_ttyHead = tty->forw; 420 else 428 if ( rtems_termios_ttyHead != NULL ) { 429 rtems_termios_ttyHead->back = NULL; 430 } 431 } 432 else { 421 433 tty->back->forw = tty->forw; 434 } 422 435 rtems_semaphore_delete (tty->isem); 423 436 rtems_semaphore_delete (tty->osem); … … 426 439 (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)) 427 440 rtems_semaphore_delete (tty->rawInBuf.Semaphore); 441 free (tty->rawInBuf.theBuf); 442 free (tty->rawOutBuf.theBuf); 443 free (tty->cbuf); 428 444 free (tty); 429 445 }
Note: See TracChangeset
for help on using the changeset viewer.