Go to file
Igor Kushnir f88af80379 Library: fix InfoComicsView crashes
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.
2021-02-01 11:27:18 +02:00
ci/win Update openssl binaries 2019-09-25 16:22:15 +02:00
common Get/set new manga field from/to the db 2021-01-16 18:30:25 +01:00
compressed_archive Fix code format errors due to changes in default coding style. (#150) 2020-07-24 21:17:49 +02:00
custom_widgets Fallback to a text close button if we can't load the svg image 2021-01-22 16:35:58 +01:00
dependencies Use pdfkit by default in macos 2019-09-27 18:32:34 +02:00
files Use the build number in code 2019-08-24 11:11:55 +02:00
images Add what's new dialog 2021-01-21 21:39:22 +01:00
release Update server code integration for QtWebApp 1.7.11 2020-08-20 18:22:57 +02:00
shortcuts_management Add actions for setting folders as manga/normal 2021-01-16 18:31:48 +01:00
tests/compressed_archive_test Format code using clang-format 2019-05-30 19:46:37 +02:00
third_party Add QtWebApp to third party readme 2020-08-20 18:22:57 +02:00
YACReader Enable SVG explicitly 2021-01-22 10:48:13 +01:00
YACReaderLibrary Library: fix InfoComicsView crashes 2021-02-01 11:27:18 +02:00
YACReaderLibraryServer Typo 2021-01-28 19:54:10 +01:00
.clang-format Remove comment pragmas 2019-05-31 19:43:54 +02:00
.editorconfig Add .editorconfig to prevent whitespace conflicts 2019-04-19 15:02:34 +00:00
.gitattributes Exclude openssl an 7zip from git export so they don't pollute our source tarballs 2020-04-11 21:26:19 +02:00
.gitignore Update gitignore 2019-08-24 11:11:50 +02:00
azure-pipelines-build-number.yml Properly date+revision calculation 2019-08-24 11:11:57 +02:00
azure-pipelines-windows-template.yml Install QtScript in Windows 2020-04-09 18:35:01 +02:00
azure-pipelines.yml Install libqt5svg5-dev package in linux 2021-01-22 11:22:05 +01:00
background.png Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00
background@2x.png Add @2x background image for macos dmg 2019-09-01 13:31:54 +02:00
CHANGELOG.md Update CHANGELOG 2021-01-17 11:44:38 +01:00
cleanOSX.sh Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00
compileOSX.sh Keep track about codesign in the logs 2019-09-18 23:26:13 +02:00
config.pri Use pdfkit by default in macos 2019-09-27 18:32:34 +02:00
COPYING.txt Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00
dmg.json Volume name was too large 2019-09-01 13:31:36 +02:00
icon.icns Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00
INSTALL.md Update docs a little bit 2019-09-23 12:13:56 +02:00
mktarball.sh Update mktarball.sh for git usage (needs .gitattributes). 2018-06-06 13:46:24 +02:00
README.md fix spelling error in readme.md (#142) 2020-07-02 20:23:44 +02:00
signapps.sh Keep track about codesign in the logs 2019-09-18 23:26:13 +02:00
YACReader.1 Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00
YACReader.desktop Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00
YACReader.pro Add YACReaderLibraryServer to YACReader.pro 2019-08-24 11:11:53 +02:00
YACReader.svg Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00
YACReaderLibrary.1 Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00
YACReaderLibrary.desktop Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00
YACReaderLibrary.svg Headless server: simplify system config logger 2018-01-28 13:32:56 +01:00

Build Master Develop
Code Validation Build Status Build Status
Linux Build Status Build Status
Windows x86 Build Status Build Status
Windows x64 Build Status Build Status
MacOS Build Status Build Status
Publish Build Build Status

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:

Packaging status

From OBS build service:

Building from source:

See INSTALL.md

Contact

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.