[Xfce4-commits] r29924 - in xfce4-dev-tools/trunk: . m4macros
Ali Abdallah
aliov at xfce.org
Tue May 5 00:03:39 CEST 2009
Brian J. Tarricone wrote:
> Ali Abdallah wrote:
>>
>> I just finish from making the current svn of xfpm compiling with
>> these changes that you made, however i had
>> a problem concerning the macro XSyncValueAdd for the xsync extension,
>> they have comparison between unsigned and signed int in this macro,
>> xfwm4 is also affected by this and it won't compile with debug=full.
>>
>> Apart from undeffing and deffing the macro, do you better idea.
>
> Crap, that's an icky one. Arguably, the macro is buggy -- the first
> line (int t = (a).lo;) is bad since it could potentially truncate
> a.lo, or misinterpret it as a negative value.
>
> But of course in practice that doesn't help anything... the bug is
> still there and it still causes a compile failure.
>
> I'm not sure what to do here; one of the actual real-world bugs that I
> found was actually related to a signed vs. unsigned comparison, so I'd
> hesitate to disable that.
>
> I wonder if there's an easy way to filter a flag out when compiling a
> specific file.
>
> If not, at worse, I guess I could add an argument to
> XDT_FEATURE_DEBUG() that lets you specify flags that you don't want,
> ever (or flags that you'd like to add). But that sounds like it might
> be a bit much.
>
> Anyone else have any thoughts on this?
>
> Ali, on a side note... looking at my headers, I see that
> XSyncValueAdd() is actually a function call. There's a
> _XSyncValueAdd() macro (note the leading '_') in there that has the
> problem you describe. According to the comment above the macros:
>
> /* The _XSync macros below are for library internal use only. They
> exist
> * so that if we have to make a fix, we can change it in this one place
> * and have both the macro and function variants inherit the fix.
> */
>
> So it seems you (and xfwm4) shouldn't be using those macros at all?
I got your point now, yes in the header there is
/*
* These are the publically usable macros. If you want the function
version
* of one of these, just #undef the macro to uncover the function.
* (This is the same convention that the ANSI C library uses.)
*/
undeffing the macro will actually make use of the function, and fix the
problem.
>
> -brian
>
Cheers,
Ali.
> _______________________________________________
> Xfce4-dev mailing list
> Xfce4-dev at xfce.org
> http://foo-projects.org/mailman/listinfo/xfce4-dev
More information about the Xfce4-dev
mailing list