[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