[Bug 15151] Compile warning fixes.

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Mar 21 02:40:43 PDT 2008


http://bugs.freedesktop.org/show_bug.cgi?id=15151





--- Comment #4 from Paulo César Pereira de Andrade <pcpa at mandriva.com.br>  2008-03-21 02:40:41 PST ---
(In reply to comment #3)
> >   There should not exist any other problems as math with void * is the
> > same as math with signed or unsiged char pointers.
> 
> So I thought, but it turned out that void* arithmetics are a GCC extension and
> not defined in any C standard. It's probably better not to use it.

  Either I am confused, or you misunderstood me :-) The patch changed the
field from "void*" to "unsigned char*" to avoid warnings about void* math.
The cases I casted to unsigned char* were because gcc doesn't compile void*
and char* arithmetic:

-           if (info->tilingEnabled && ((pPix->devPrivate.ptr - info->FB) ==
0))
+           if (info->tilingEnabled && (((unsigned char *)pPix->devPrivate.ptr
- info->FB) == 0))

this could just be "pPix->devPrivate.ptr == info->FB"
and:

-           dst_offset = (pPixmap->devPrivate.ptr - info->FB) +
+           dst_offset = ((unsigned char *)pPixmap->devPrivate.ptr - info->FB)
+

otherwise, if keeping RADEONInfoRec.FB type as void*, it would be required
a quite larger patch, casting it to a char pointer, to avoid the warnings.

  The comment about the math being the same is because
((void*)<addr> + integer) should result the same pointer as
((unsigned char*)<addr> + integer).


-- 
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the xorg-driver-ati mailing list