RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Ralf S. Engelschall
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: rpm                              Date:   12-Nov-2007 14:22:03
  Branch: HEAD                             Handle: 2007111213220300

  Modified files:
    rpm/rpmio               rpmsq.c

  Log:
    Not all C compilers are happy to straight-forward cast a pid_t integer
    to a void pointer as this usually can leads to incorrect results:
    
    rpmsq.c: In function 'rpmsqInsert':
    rpmsq.c:250: warning: cast to pointer from integer of different size
    rpmsq.c:261: warning: cast to pointer from integer of different size
    rpmsq.c: In function 'rpmsqRemove':
    rpmsq.c:280: warning: cast to pointer from integer of different size
    rpmsq.c: In function 'rpmsqEnable':
    rpmsq.c:389: warning: cast to pointer from integer of different size
    rpmsq.c: In function 'rpmsqFork':
    rpmsq.c:442: warning: cast to pointer from integer of different size
    rpmsq.c:470: warning: cast to pointer from integer of different size
    rpmsq.c:479: warning: cast to pointer from integer of different size
    rpmsq.c: In function 'rpmsqWaitUnregister':
    rpmsq.c:546: warning: cast to pointer from integer of different size
    rpmsq.c:556: warning: cast to pointer from integer of different size
    rpmsq.c: In function 'rpmsqWait':
    rpmsq.c:567: warning: cast to pointer from integer of different size
    rpmsq.c:582: warning: cast to pointer from integer of different size
    rpmsq.c:588: warning: cast to pointer from integer of different size
    
    As the result in our case is just an identifier (which AFAIK is
    currently mainly used for debugging purposes), the conversion is
    fine.  Nevertheless we have to perform some "union" trickery to get
    the conversion done without a complaining compiler...

  Summary:
    Revision    Changes     Path
    1.28        +14 -2      rpm/rpmio/rpmsq.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmsq.c
  ============================================================================
  $ cvs diff -u -r1.27 -r1.28 rpmsq.c
  --- rpm/rpmio/rpmsq.c 8 Nov 2007 20:33:20 -0000       1.27
  +++ rpm/rpmio/rpmsq.c 12 Nov 2007 13:22:03 -0000      1.28
  @@ -204,7 +204,13 @@
   
   #define      SAME_THREAD(_a, _b)     pthread_equal(((pthread_t)_a), 
((pthread_t)_b))
   
  -#define      ME()    ((void *)pthread_self())
  +#define ME() __tid2vp(pthread_self())
  +static void *__tid2vp(pthread_t tid)
  +{
  +    union { pthread_t tid; void *vp; } u;
  +    u.tid = tid;
  +    return u.vp;
  +}
   
   #else
   
  @@ -218,7 +224,13 @@
   
   #define      SAME_THREAD(_a, _b)     (42)
   
  -#define      ME()    (((void *)getpid()))
  +#define ME() __pid2vp(getpid())
  +static void *__pid2vp(pid_t pid)
  +{
  +    union { pid_t pid; void *vp; } u;
  +    u.pid = pid;
  +    return u.vp;
  +}
   
   #endif       /* HAVE_PTHREAD_H */
   
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to