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