Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge new patches #1

Merged
merged 17 commits into from
May 14, 2020
Merged

merge new patches #1

merged 17 commits into from
May 14, 2020

Conversation

dkondor
Copy link
Owner

@dkondor dkondor commented May 14, 2020

No description provided.

RaphaelRochet and others added 17 commits January 17, 2014 18:34
Depending on which C++ standard library headers have been included there
might an abs(float) function already declared in the global namespace,
so the definition in this file conflicts with it. This cause a build
failure with GCC 7, which conforms more closely to the C++ standard with
respect to overloads of abs.

Including <cmath> and adding a using-declaration for std::abs ensures
that the standard std::abs(float) function is available. This solution
should be portable to all compilers.
switch from fork to g_spawn_async
Remove abs(float) function that clashes with std::abs(float)
Remove unnecessary requirement for device to be absolute
The template member functions Stroke::save and Stroke::load get called
via the serialize() function generated by boost's macro
BOOST_SERIALIZATION_SPLIT_MEMBER() in gesture.h.  Since the definitions
of save()/load() are only available in gesture.cc, the compiler may
produce two versions of Stroke::serialize() -- one with save()/load()
inlined in gesture.o and one with calls to save()/load() in all other
referencing translation units. Since the compiler inlined Stroke::save()
and Stroke::load(), it will not export them in gesture.o (which is
legitimate, since the code only requests an export of
Stroke::serialize). As a result, some orders of object files can fail to
link, when the linker picks the version of Stroke::serialize() that
would call save()/load() (which are not available separately) instead of
the version with these functions inlined.

Avoid relying on this compiler- and optimization-level dependent
behavior by moving the definition of template member functions
Stroke::save() and Stroke::load() into gesture.h. As a side-effect, that
change unifies code style, since all other classes have their ::save()
and ::load() definitions in header files, too.

These link failures surfaced when building on s390x with -march=zEC12 or
later, and can be reproduced on x86_64 with gcc parameters
    --param max-inline-insns-auto=80 --param inline-min-speedup=2

Signed-off-by: Marius Hillenbrand <mhillen@linux.ibm.com>
Fix a linking problem by moving Stroke::save() and load() into header
fix a crash hapenning since updating Ubuntu 18.04
@dkondor dkondor merged commit 5b5ebeb into dkondor:master May 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants