[PATCH 02/16] xf86AutoConfig: Simplify builtin-config splitting.
Dan Nicholson
dbn.lists at gmail.com
Wed May 26 12:19:52 PDT 2010
On Wed, May 26, 2010 at 12:12 PM, Mark Kettenis <mark.kettenis at xs4all.nl> wrote:
>> From: Jamey Sharp <jamey at minilop.net>
>> Date: Wed, 26 May 2010 10:40:51 -0700
>>
>> On Wed, May 26, 2010 at 1:29 AM, Mark Kettenis <mark.kettenis at xs4all.nl> wrote:
>> >> From: Jamey Sharp <jamey at minilop.net>
>> >> Date: Tue, 25 May 2010 16:53:13 -0700
>> >>
>> >> @@ -179,7 +169,7 @@ xf86AutoConfig(void)
>> >> xf86MsgVerb(X_DEFAULT, 3, "--- End of built-in configuration ---\n");
>> >>
>> >> xf86initConfigFiles();
>> >> - xf86setBuiltinConfig(builtinConfig);
>> >> + xf86setBuiltinConfig((const char **) builtinConfig);
>> >
>> > That cast isn't really necessary isn't it?
>>
>> I wasn't happy about it either, but at least according to GCC, while
>> "const char *" is assignment-compatible from "char *", "const char **"
>> is not compatible with "char **". So I was going to have to cast
>> either at the call to free or this call to xf86setBuiltinConfig, and
>> this seemed more sane to me.
>
> Ugh, pointers to pointers continue to confuse me, so I wouldn't be
> able to tell if GCC is on crack here or not. Thanks for the
> explanation.
We had the same discussion a week or so ago about the char **tags in
InputAttributes. Finally I had to see exactly what gcc was up to. The
results don't make me happy, but I'm no C guru to say whether it's
right or wrong.
int main(void)
{
const char * const *a;
const char **b;
char * const *c;
char *d[] = {"foo", "bar"};
a = d; /* warning: assignment from incompatible pointer type */
b = d; /* warning: assignment from incompatible pointer type */
c = d; /* OK? */
return 0;
}
--
Dan
More information about the xorg-devel
mailing list