Guest User

svn diff

a guest
Apr 15th, 2012
88
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Index: libtransmission/utils.c
  2. ===================================================================
  3. --- libtransmission/utils.c (版本 13285)
  4. +++ libtransmission/utils.c (工作副本)
  5. @@ -328,24 +328,63 @@
  6.  /***
  7.  ****
  8.  ***/
  9. -
  10. +tr_lock* tr_glockMalloc = NULL;
  11.  void*
  12.  tr_malloc( size_t size )
  13.  {
  14. -    return size ? malloc( size ) : NULL;
  15. +    void * p = NULL;
  16. +    if(size){
  17. +        if(!tr_glockMalloc){
  18. +       tr_glockMalloc = tr_lockNew();    
  19. +   }
  20. +   tr_lockLock(tr_glockMalloc);
  21. +        p = malloc(size);
  22. +        tr_lockUnlock(tr_glockMalloc);
  23. +    }
  24. +    return p;
  25. +    //return size ? malloc( size ) : NULL;
  26.  }
  27.  
  28.  void*
  29.  tr_malloc0( size_t size )
  30.  {
  31. +    // void * p = NULL;
  32. +    // if(size){
  33. +    //     if(!tr_glockMalloc){
  34. +    //         tr_glockMalloc = tr_lockNew();    
  35. +    //     }
  36. +    //     tr_lockLock(tr_glockMalloc);
  37. +    //     p = calloc(1,size);
  38. +    //     tr_lockUnlock(tr_glockMalloc);
  39. +    // }
  40. +    // return p;
  41.      return size ? calloc( 1, size ) : NULL;
  42.  }
  43.  
  44. +void*
  45. +tr_realloc( void *ptr,size_t size )
  46. +{
  47. +    void * p = NULL;
  48. +    if(size){
  49. +        if(!tr_glockMalloc){
  50. +       tr_glockMalloc = tr_lockNew();    
  51. +   }
  52. +   tr_lockLock(tr_glockMalloc);
  53. +        p = realloc(ptr,size);
  54. +        tr_lockUnlock(tr_glockMalloc);
  55. +    }
  56. +    return p;
  57. +    //return size ? malloc( size ) : NULL;
  58. +}
  59. +
  60.  void
  61.  tr_free( void * p )
  62.  {
  63. -    if( p != NULL )
  64. +    if( p != NULL ){
  65. +        tr_lockLock(tr_glockMalloc);
  66.          free( p );
  67. +        tr_lockUnlock(tr_glockMalloc);
  68. +    }
  69.  }
  70.  
  71.  void*
  72. Index: libtransmission/utils.h
  73. ===================================================================
  74. --- libtransmission/utils.h (版本 13285)
  75. +++ libtransmission/utils.h (工作副本)
  76. @@ -292,6 +292,8 @@
  77.  /** @brief Portability wrapper around malloc() in which `0' is a safe argument */
  78.  void* tr_malloc( size_t size );
  79.  
  80. +
  81. +void* tr_realloc( void *ptr,size_t size );
  82.  /** @brief Portability wrapper around calloc() in which `0' is a safe argument */
  83.  void* tr_malloc0( size_t size );
  84.  
  85. Index: libtransmission/trevent.c
  86. ===================================================================
  87. --- libtransmission/trevent.c   (版本 13285)
  88. +++ libtransmission/trevent.c   (工作副本)
  89. @@ -262,6 +262,7 @@
  90.  
  91.      session->events = NULL;
  92.  
  93. +    event_set_mem_functions(tr_malloc,tr_realloc,tr_free);
  94.      eh = tr_new0( tr_event_handle, 1 );
  95.      eh->lock = tr_lockNew( );
  96.      pipe( eh->fds );
  97. Index: daemon/my-valgrind.sh
  98. ===================================================================
  99. --- daemon/my-valgrind.sh   (版本 13285)
  100. +++ daemon/my-valgrind.sh   (工作副本)
  101. @@ -2,4 +2,4 @@
  102.  export G_SLICE=always-malloc
  103.  export G_DEBUG=gc-friendly
  104.  export GLIBCXX_FORCE_NEW=1
  105. -valgrind --tool=memcheck --leak-check=full --leak-resolution=high --num-callers=64 --log-file=x-valgrind --show-reachable=yes ./transmission-daemon -f
  106. +valgrind --tool=memcheck --leak-check=full --leak-resolution=high --num-callers=32 --log-file=x-valgrind --show-reachable=yes /usr/local/bin/transmission-daemon
  107. Index: daemon/daemon.c
  108. ===================================================================
  109. --- daemon/daemon.c (版本 13285)
  110. +++ daemon/daemon.c (工作副本)
  111. @@ -471,13 +471,13 @@
  112.          return 0;
  113.      }
  114.  
  115. -    if( !foreground && tr_daemon( true, false ) < 0 )
  116. -    {
  117. -        char buf[256];
  118. -        tr_snprintf( buf, sizeof( buf ), "Failed to daemonize: %s", tr_strerror( errno ) );
  119. -        printMessage( logfile, TR_MSG_ERR, MY_NAME, buf, __FILE__, __LINE__ );
  120. -        exit( 1 );
  121. -    }
  122. +    //if( !foreground && tr_daemon( true, false ) < 0 )
  123. +    //{
  124. +    //    char buf[256];
  125. +    //    tr_snprintf( buf, sizeof( buf ), "Failed to daemonize: %s", tr_strerror( errno ) );
  126. +    //    printMessage( logfile, TR_MSG_ERR, MY_NAME, buf, __FILE__, __LINE__ );
  127. +    //    exit( 1 );
  128. +    //}
  129.  
  130.      /* start the session */
  131.      tr_formatter_mem_init( MEM_K, MEM_K_STR, MEM_M_STR, MEM_G_STR, MEM_T_STR );
RAW Paste Data