From: Eric Blake Date: Tue, 26 Jul 2011 22:21:10 +0000 (-0600) Subject: build: avoid type-punning compiler warning X-Git-Tag: v0.9.4-rc2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b240f966d9a7f7670cc2107dc06eba630646fb44;p=thirdparty%2Flibvirt.git build: avoid type-punning compiler warning On RHEL 5, with gcc 4.1.2: rpc/virnetsaslcontext.c: In function 'virNetSASLSessionUpdateBufSize': rpc/virnetsaslcontext.c:396: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] * src/rpc/virnetsaslcontext.c (virNetSASLSessionUpdateBufSize): Use a union to work around gcc warning. --- diff --git a/src/rpc/virnetsaslcontext.c b/src/rpc/virnetsaslcontext.c index 71796b9edb..a0752dd08d 100644 --- a/src/rpc/virnetsaslcontext.c +++ b/src/rpc/virnetsaslcontext.c @@ -390,10 +390,13 @@ cleanup: static int virNetSASLSessionUpdateBufSize(virNetSASLSessionPtr sasl) { - unsigned *maxbufsize; + union { + unsigned *maxbufsize; + const void *ptr; + } u; int err; - err = sasl_getprop(sasl->conn, SASL_MAXOUTBUF, (const void **)&maxbufsize); + err = sasl_getprop(sasl->conn, SASL_MAXOUTBUF, &u.ptr); if (err != SASL_OK) { virNetError(VIR_ERR_INTERNAL_ERROR, _("cannot get security props %d (%s)"), @@ -402,8 +405,8 @@ static int virNetSASLSessionUpdateBufSize(virNetSASLSessionPtr sasl) } VIR_DEBUG("Negotiated bufsize is %u vs requested size %zu", - *maxbufsize, sasl->maxbufsize); - sasl->maxbufsize = *maxbufsize; + *u.maxbufsize, sasl->maxbufsize); + sasl->maxbufsize = *u.maxbufsize; return 0; }