InfoComicsView constructor is the only function that connects to FlowView's currentCoverChanged signal. Neither of the slots connected to this signal handles the argument value index==-1. So when FlowView emits this signal with index==-1, YACReaderLibrary crashes. Returning early from either ComicsView::updateInfoForIndex() or InfoComicsView::setCurrentIndex() when index==-1 is not sufficient - the crash happens in the other slot then. Let us skip emitting the signal in FlowView if index==-1 rather than return early from both slots. Steps to reproduce 1: 1. Launch YACReaderLibrary version that matches the version of the default library database. Alternatively, select a compatible library after starting the application. 2. If InfoComicsView is not active, switch to it. 3. (optional) Switch to another comics view out of InfoComicsView. 4. Quit YACReaderLibrary. The application crashes during exit - after the "YACReaderLibrary closed with exit code : 0" message is printed. Steps to reproduce 2: 1. Launch a YACReaderLibrary version newer than the version of the default library database. 2. Click the "No" button in the "Update needed" dialog that pops up. 3. Change between comics views until InfoComicsView becomes active. If this view was active at the beginning, switch through all the views to get back to it. At this point YACReaderLibrary crashes. |
||
---|---|---|
ci/win | ||
common | ||
compressed_archive | ||
custom_widgets | ||
dependencies | ||
files | ||
images | ||
release | ||
shortcuts_management | ||
tests/compressed_archive_test | ||
third_party | ||
YACReader | ||
YACReaderLibrary | ||
YACReaderLibraryServer | ||
.clang-format | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
azure-pipelines-build-number.yml | ||
azure-pipelines-windows-template.yml | ||
azure-pipelines.yml | ||
background.png | ||
background@2x.png | ||
CHANGELOG.md | ||
cleanOSX.sh | ||
compileOSX.sh | ||
config.pri | ||
COPYING.txt | ||
dmg.json | ||
icon.icns | ||
INSTALL.md | ||
mktarball.sh | ||
README.md | ||
signapps.sh | ||
YACReader.1 | ||
YACReader.desktop | ||
YACReader.pro | ||
YACReader.svg | ||
YACReaderLibrary.1 | ||
YACReaderLibrary.desktop | ||
YACReaderLibrary.svg |
Build | Master | Develop |
---|---|---|
Code Validation | ||
Linux | ||
Windows x86 | ||
Windows x64 | ||
MacOS | ||
Publish Build |
YACReader
"Yet another comic reader"
License
This software has been developed by Luis Ángel San Martín Rodríguez (luisangelsm@gmail.com) under GPL v3 license (see COPYING.txt).
Getting YACReader
Official releases:
https://github.com/YACReader/yacreader/releases
As a package:
From OBS build service:
Building from source:
See INSTALL.md
Contact
- Project home page : www.yacreader.com
- e-mail:
- Social:
- Facebook - http://www.facebook.com/YACReader
- Twitter - https://twitter.com/yacreader
- YouTube - https://www.youtube.com/user/yacreader
- Instagram - https://www.instagram.com/yacreader/
If you need help or have any suggestion, please, send me an e-mail.
Contributing
If you are interested in contributing to the project the first step should be to contact me so we can plan together the best approach, you can send an e-mail or just open an issue in this repo. For small bug fixes it is usually ok to open a PR directly.
Contributions are not restricted to code, you can help the project by bringing new UI/UX ideas, designing new assets, writing manuals or tutorials, translating the apps, etc. If you are interested in DevOps, YACReader uses Azure Pipelines for CI/CD, any improvements in that area are welcome. Testing pre-releases is also really appreciated.
Code
YACReader uses clang-format
to ensure a common style and avoid deviances from it. CI checks this and will fail if the correct format is not used. clang-format
needs to be called recursively in all the folders because some of them have the own .clang-format
file, mainly to exclude changing the format in third-party libraries which are included in the source code. I recommend to configure your development tools to use clang-format
, you can try to use it manually, but please, do it always before committing changes. I recommend using QtCreator configured properly, you can find a tutorial here.
CI/CD
Any PR will be validated through CI, and it will not be merged if CI fails.
Pull Requests
The base and target branch for any PR should always be develop
.
Donations
YACReader is free but it needs money to keep being alive, so please, if you like YACReader, visit the home page and make a donation.