[Bug 209742] devel/godot: Update to 2.0.4.1; add devel/godot-tools port

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Jul 15 17:43:43 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209742

--- Comment #51 from lightside <lightside at gmx.com> ---
(In reply to comment #49)
> With the upcoming release of 11.0 we also need to add a small adjustment to RtAudio.cpp.
>
> This updated patch adds the following to the previous 2.0.4.1 update to the
> end of files/patch-drivers_rtaudio_RtAudio.cpp. sampleRate is an unsigned int
> so srate gets promoted to unsigned int, this means the result is always
> positive so the use of abs() is of no use.

I think, that your logic about srate is wrong, because srate defined as int:
https://github.com/godotengine/godot/blob/820dd1d0016763cda6177104e66e09c8634150be/drivers/rtaudio/RtAudio.cpp#L9018
I placed following debug code near your patched place:
printf("srate=%d, sampleRate=%d, srate - sampleRate = %d, abs(srate -
sampleRate) = %d\n", srate, sampleRate, srate - sampleRate, abs(srate -
sampleRate));
with following output:
srate=44100, sampleRate=44100, srate - sampleRate = 0, abs(srate - sampleRate)
= 0

But there are other possible cases, where abs is needed.
-8<--
#include <stdio.h>
#include <stdlib.h>

int check(int a, unsigned int b)
{
        return (a - b) > 100;
}

int check_abs(int a, unsigned int b)
{
        return abs(a - b) > 100;
}

int main()
{
        unsigned int c = 44200;
        for (int i = 44100; i <= 44300; i += 100)
                printf("check(%d, %d) = %d; check_abs(%d, %d) = %d\n", i, c,
check(i, c), i, c, check_abs(i, c));

        return 0;
}
-->8-
% c++ test.cpp -o test && ./test
check(44100, 44200) = 1; check_abs(44100, 44200) = 0
check(44200, 44200) = 0; check_abs(44200, 44200) = 0
check(44300, 44200) = 0; check_abs(44300, 44200) = 0

Without abs, the first case is wrong, i.e. possible srate = 44100 and
sampleRate = 44200.
There are cases with fabs in the same code:
https://github.com/godotengine/godot/blob/820dd1d0016763cda6177104e66e09c8634150be/drivers/rtaudio/RtAudio.cpp#L1093
https://github.com/godotengine/godot/blob/820dd1d0016763cda6177104e66e09c8634150be/drivers/rtaudio/RtAudio.cpp#L1148

And this is not related to FreeBSD 11 at all, because issue with abs is
different, related to possible abs redefinition. There are many other places in
the source code with abs usage:
https://github.com/godotengine/godot/blob/820dd1d0016763cda6177104e66e09c8634150be/drivers/opus/celt/celt_encoder.c#L651
https://github.com/godotengine/godot/blob/820dd1d0016763cda6177104e66e09c8634150be/drivers/opus/celt/cwrs.c#L447
https://github.com/godotengine/godot/blob/820dd1d0016763cda6177104e66e09c8634150be/drivers/theora/analyze.c#L753
https://github.com/godotengine/godot/blob/820dd1d0016763cda6177104e66e09c8634150be/drivers/vorbis/floor1.c#L265
etc.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-ports-bugs mailing list