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

Fix Manipulation and Bond Centric Manipulation tools #825

Merged
merged 2 commits into from
Feb 23, 2022

Conversation

aerkiaga
Copy link
Collaborator

Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

The issue fixed in this Pull Request is described at this Debian package bug. Simply, the Manipulation and Bond Centric Manipulation tools don't work.

The problem seems to arise from an Avogadro::Core::Molecule& being cast to a pointer and then stored. For some reason, this gives a different value as just using it in an expression without storing it first. I must admit I don't understand this, and it might be some special feature of the language I'm not aware of, or a compiler bug.

However, by the code one can deduce that both approaches should be expected to give the same result, so it's safe to simply replace the stored variable with an expression, and this workaround fully restores both tools.

Signed-off-by: Aritz Erkiaga <aerkiaga3@gmail.com>
Signed-off-by: Aritz Erkiaga <aerkiaga3@gmail.com>
@aerkiaga
Copy link
Collaborator Author

Note: the bug occurs both with GCC 9.3.0-17ubuntu1~20.04 and Clang 10.0.0-4ubuntu1, so it's probably not a compiler bug.

@github-actions
Copy link
Contributor

Here are the build results
Avogadro2.AppImage
macOS.dmg
Ubuntu-2004.tar.gz
Win64.exe
Artifacts will only be retained for 90 days.

@ghutchis
Copy link
Member

Looks good to me. Initial testing seems to confirm it fixes the bug. It's probably worth going through the other tools to see if there are similar patterns.

@avo-bot
Copy link

avo-bot commented Apr 30, 2022

This pull request has been mentioned on Avogadro Discussion. There might be relevant details there:

https://discuss.avogadro.cc/t/april-2022-development-progress/3786/1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
3 participants