Posted to tcl by ferrieux at Wed Jul 25 20:23:43 GMT 2012view raw

  1. /* to be used in tclIO.c */
  2.  
  3. #define BAD_POINTER ((void *)0xDEADBEEF)
  4.  
  5. void ckfree_burn_chanptr(char *blockPtr) {
  6. Channel *chanPtr = (Channel *) blockPtr;
  7.  
  8. chanPtr->state = BAD_POINTER;
  9. chanPtr->instanceData = BAD_POINTER;
  10. chanPtr->typePtr = BAD_POINTER;
  11. chanPtr->downChanPtr = BAD_POINTER;
  12. chanPtr->upChanPtr = BAD_POINTER;
  13. chanPtr->inQueueHead = BAD_POINTER;
  14. chanPtr->inQueueTail = BAD_POINTER;
  15.  
  16. ckfree(blockPtr);
  17. }
  18.  
  19. /* THEN REPLACE ALL INSTANCES OF */
  20.  
  21. Tcl_EventuallyFree(chanPtr, TCL_DYNAMIC);
  22.  
  23. /* WITH */
  24.  
  25. Tcl_EventuallyFree(chanPtr, ckfree_burn_chanptr);