controller: fixes int overflow with properties that span +-INT_MAX
When the range for a property is defined as -INT_MAX-1 .. INT_MAX, like
the xpos in a videomixer the following expression in the macro
definitions of convert_g_value_to_##type (and the equivalent in
convert_value_to_##type)
v = pspec->minimum + (g##type) ROUNDING_OP ((pspec->maximum - pspec->minimum) * s);
are converted to:
v = -
2147483648 + (g##type) ROUNDING_OP ((
2147483647 - -
2147483648) * s);
(
2147483647 - -
2147483648) overflows to -1 and the net result is:
v = -
2147483648 + (g##type) ROUNDING_OP (-1 * s);
so v only takes the values -
2147483648 for s == 0 and
2147483647
for s == 1.
Rewriting the expression as minimum*(1-s) + maximum*s gives the correct
result in this case.
https://bugzilla.gnome.org//show_bug.cgi?id=705630