Commit Graph

1808 Commits

Author SHA1 Message Date
Kārlis Seņko
fe92aaeb3d Update usage of deprecated qt model and regex API. 2021-04-24 13:13:36 +03:00
Kārlis Seņko
820aa98b7b Fix crash and wrong behavior caused by qt model/view changes
* Crash caused by list varibles getting initialized after the models
using them. Previously Qt didn't try to access them so early. Move them
to the models as there is no need to share them betwen view and models.
* Fix empty color list by using begin/endResetModel instead of
dataChanged to signal changes in data.
2021-04-24 13:13:36 +03:00
Kārlis Seņko
da17c6e411 Build system compatiblity with QT6.
Qt6 moved some of the functionality to separate modules.
2021-04-24 13:13:36 +03:00
karliss
4328f5df5a
Adjust prefix handling due to rizin portable mode changes. (#2671) 2021-04-20 06:34:52 +03:00
Florian Märkl
8d47919234
Update Version to 2.0.1 (#2663) 2021-04-10 11:32:17 +02:00
Kārlis Seņko
8c659feb43 Fix path when building appimage, caused by #2574 2021-04-10 10:14:35 +02:00
Kārlis Seņko
fe3a93cce0 Fix attaching debugger using pid. 2021-04-10 10:14:35 +02:00
Florian Märkl
a1f751abb3 Update Version to 2.0.0 2021-03-27 15:58:31 +01:00
Florian Märkl
00da6bbed5 Update Translations 2021-03-27 15:43:31 +01:00
yossizap
749cc63c9c
Show stack address value in executable addresses (#2641) 2021-03-20 21:12:06 +00:00
karliss
a18a3a8b46
Use relative line numbers instead of addresses when placing arrows. (#2636)
The used data structures are intended for dense ranges, using addresses
directly can cause excesive memory usage.
2021-03-13 18:36:22 +02:00
karliss
d73d486ca0
Add setting import from Cutter before RadareOrg to rizin renames. (#2588) 2021-03-06 18:26:58 +01:00
Itay Cohen
6cbf0c0cbf
Better handle project names (#2603) 2021-02-28 16:51:08 +02:00
yossizap
de234e600e
Add dbg.trace_continue to debug options (#2613) 2021-02-26 19:03:28 +02:00
Florian Märkl
6da02c6a02
Update for RZ_GITTAP Removal (#2608) 2021-02-24 18:52:35 +01:00
Florian Märkl
f95751c4cd
Remove Organization Domain to set QSettings path on macOS to ~/.config/rizin/cutter.ini (#2607) 2021-02-24 10:15:32 +02:00
GustavoLCR
b4b9b312e7
Offer a default function name in actionAnalyzeFunction input box (#2572) 2021-02-24 10:10:54 +02:00
Itay Cohen
42f01fcf5d
Support loading projects from the command line (#2606) 2021-02-24 08:10:01 +02:00
Alexis Ehret
a47c2bb5aa
Add clang-format linter CI jobs (#2604) 2021-02-19 16:32:58 +02:00
karliss
0553d3ffdb
Add JSDec packaging for macos. (#2580) 2021-02-18 16:36:27 +02:00
optizone
00d2245538
refactor DisassemblyLeftPanel::paintEvent (#2559) 2021-02-15 08:46:57 +02:00
yossizap
8f89d1641b
Add reverse debugging (#1918)
* Add initial reverse debugging support

* Add reverse debug icons

* Added an option to stop the debug session and enabled continue and step back

* Added a new icon for stop trace and recolored start trace

* Toggle reverse debug actions when not tracing

* Stop existing trace sessions in stopDebug

* Ported to Rizin

* Set reverse icons to invisible when not in a trace session instead of disabled

* Updated rizin submodule

* Cleaned up step and continue events

* Apply clang format
2021-02-13 17:35:57 +00:00
Florian Märkl
7db5274032 Update Org/App Settings for Qt 2021-01-25 22:09:19 +01:00
Florian Märkl
b0cef7e634 Change Executable to Lowercase and use re.rizin.cutter everywhere 2021-01-25 22:09:19 +01:00
ITAYC0HEN
48ae2150a9 Apply clang-format 2021-01-24 18:34:16 +02:00
ITAYC0HEN
a62f138e2f Add support for clang-format 2021-01-24 18:34:16 +02:00
Riccardo Schirone
c82fc5b44f
Use Rizin seek API instead of commands (#2581) 2021-01-24 17:03:05 +01:00
Florian Märkl
0229e7ed8b
Don't print Warnings for whitespace-only JSON Failures (#2579) 2021-01-24 14:12:01 +01:00
Florian Märkl
3c2b263de7
Make SearchWidget set search.in only locally (#2578) 2021-01-24 14:11:46 +01:00
GustavoLCR
3c8f0d905b
Activate window before showing close dialog (#2573) 2021-01-23 17:09:44 +02:00
Ray
bb6a9e2a91
Update the icon on macOS to match the icon grid of Apple design guideline (#2571) 2021-01-23 10:39:56 +01:00
Anton Kochkov
88478ffb30
New JSDec home (#2563)
Switch from r2dec to jsdec
2021-01-16 11:48:31 +01:00
karliss
18e98e7868
Don't compile files for features that are disabled. (#2561)
Don't wrap whole cpp file in ifdef, it confuses clang-format.
2021-01-11 23:49:54 +02:00
karliss
562979bcff
Remove qmake (#2546)
* Remove qmake project and move some variables directly to CMake project
* Remove meson and update docs.
* Add instructions for basic macOS build.
2021-01-10 13:07:39 +02:00
karliss
29cbd06ab2
Run macos packaging in GHA. (#2529)
* Enable running of macOS packaging in GHA, most of the work done in dedbabde56
* Cleanup breakpad handling
* Have single version of main executable in folder expected by macOS and most tools instead of executable+symlink+shell script
* Handle Breakpad library lookup in more CMake way using FindBreakpad just like it's done on other platforms and packages
* Refactor error handling in some of the shell scripts to use `set -e` instead of `|| exit 1` for each command.
* Fix DMG background setup
2021-01-02 19:57:29 +02:00
Ernest1338
276b53fd75
Fix: Core plugin list doesn't work [#2542] (#2543)
The command had been renamed more than 2 years ago.
2020-12-30 22:48:52 +02:00
yossizap
a78613904e
Fix debug seek to PC (#2527) 2020-12-19 23:32:51 +02:00
Florian Märkl
ac8c0e4175
Add Setting for Minimum Font Size in Graphs (#2524) 2020-12-19 16:04:48 +02:00
karliss
c985fdc1b1
Run cutter appimage packaging in GHA. (#2490)
* Run cutter appimage packaging in GHA.
* Update cutter-deps.
* Switch to older visual studio due to pyside having problems parsing MSVC
headers.
* Take GIL in the injected code fragment #2511.
2020-12-19 12:43:33 +02:00
Florian Märkl
5bf513c45b
Add RizinFunctionTask and common base class with RizinCmdTask (#2520) 2020-12-18 10:47:50 +01:00
Anton Kochkov
601dc248a6
Remove unused logo (#2518) 2020-12-17 20:14:57 +01:00
Florian Märkl
269cedd36e
Fix Warnings by g++ 10.2 (#2523) 2020-12-17 20:14:40 +01:00
Florian Märkl
0574c50981
Update Rizin (#2522) 2020-12-17 20:13:30 +01:00
Anton Kochkov
70cef2c1af
More R2/Radare -> Rizin renames (#2516) 2020-12-16 11:59:23 +01:00
Florian Märkl
58745547a2
Update Rizin with RizinTask (#2517) 2020-12-16 10:51:53 +01:00
xarkes
00f6d47357 First iteration at renaming remains of radare2 2020-12-14 19:39:29 +01:00
Schrijvers Luc
3b5c6ff9c0
Fix build for Haiku which doesn't have O_ASYNC yet (#2485) 2020-12-13 15:39:23 +02:00
Florian Märkl
7541c8910d
Update Rizin 2020-12-08 10:46:30 +01:00
Florian Märkl
46f7a8e4f6
Update Rizin for defines 2020-12-07 19:20:47 +01:00
Florian Märkl
5218fa0fd6
Update Rizin 2020-12-07 09:19:18 +01:00
Florian Märkl
dedbabde56
Add macOS Packaging in CMake (#7) 2020-12-07 09:19:18 +01:00
Florian Märkl
8c35ebb837
Restructure CMake files to start in the root of the tree (#6) 2020-12-07 09:19:16 +01:00
Florian Märkl
85042000e8
Add Support for new Projects (#3) 2020-12-07 09:17:58 +01:00
Florian Märkl
78dcba4c26
More Rizin Updating in CMake and use it in AppVeyor (#5) 2020-12-07 09:17:58 +01:00
Florian Märkl
b6ec01a7b0
Set XrefsDialog Parent (#4) 2020-12-07 09:17:57 +01:00
Florian Märkl
a80221641e
Optimize remapAnnotationOffsetsToQString() 2020-12-07 09:17:57 +01:00
Florian Märkl
2b8ac6ecf7
Port to Rizin 2020-12-07 09:17:56 +01:00
Petros S
d813b7ac8c
Add preview functionality to DisassemblyWidget when hovering code (#2459)
* Add preview functionality to DisassemblyWidget when hovering code
2020-12-05 09:26:26 +02:00
xarkes
b02100b66b
Reworked renaming in disassembly widgets (#2468) 2020-12-04 18:08:56 +01:00
Yuhao Bi
b07bffc5fe
Fix build on centos7 gcc4.8 (#2492) 2020-12-01 23:17:09 +02:00
karliss
f9bde4a2ff
Start making adjustment for qt6 compatibility. (#2463)
* Introduce cmake option for using Qt6, build doesn't work fully yet.
* Recursive mutex, QActionGroup, QComboBox::AdjustToMinimumContentsLength
* Cleanup dock locking
2020-11-30 09:42:13 +02:00
Pulak Malhotra
ef9b1328f4
Adding Labels to Graph Blocks in Disassembly (#2482) 2020-11-29 16:41:13 +02:00
smhaziq
ca3d8ce78f
Show comment column in each panel that have "add comment" option in the context menu (#2441) 2020-11-19 20:17:28 +02:00
xarkes
e236f6b0fc
Remote Debug dialog improvements (#2472)
Co-authored-by: nk521 <nk_mason@protonmail.com>
2020-11-18 13:15:36 +01:00
xarkes
5d84844587
Fixed word highlighting in DisassemblyWidget (#2473)
* Fixed word highlighting in DisassemblyWidget
2020-11-15 22:26:49 +02:00
karliss
81ef309e09
Remove duplicate aplication of scaling factor. (#2461) 2020-11-04 18:39:12 +02:00
Hikaru Terazono
8ba2164d00
Trackpad gesture support for graph views (#2453)
Zooming using pinch gesture.
2020-11-03 08:23:12 +02:00
Petros S
6039dab2ff
Use the new connect syntax (#2460) 2020-11-03 08:11:50 +02:00
Josh Maxwell
dd4a40bcc1
Fixes buggy line highlighting (#2444)
* Calling updateCursorPosition before moving cursor.

Previously the call to readCurrentDisassemblyOffset in
updateCursorPosition was causing essentially an off-by-one bug since the
cursor was moved prior to checking the current offset.

* Separated highlightCurrentLine and highlightPCLine logic so they can be
called independently when needed.

Previously logic for highlighting the PC was included in highlighting
the current line. This caused the PC to not be highlighed when the
current line was not on-screen and being highlighted.
2020-10-14 01:01:04 +03:00
xarkes
1cbbc45678
Automating translations updates (#2218)
* Automatically push new strings to cutter-translations
2020-10-10 21:00:34 +03:00
karliss
d971f30d25
Set executable icon in windows CMake build. (#2443) 2020-10-10 13:52:56 +03:00
karliss
c49cbc9f01
Add cmake script for packaging r2dec on windows. (#2425) 2020-10-03 13:50:57 +03:00
Stephan Bridger
38b317e619
Make Hexdump parsing view read-only (#2434) 2020-09-30 20:15:44 +03:00
karliss
ad66718f37
Add CMake code for packaging r2ghidra on windows. (#2422) 2020-09-06 11:52:13 +03:00
karliss
1966c76ba7
Update windows CMake breakpad code. (#2421) 2020-09-05 11:25:34 +03:00
karliss
1adc30794b
Update cutter version to 1.12.0 (#2419) 2020-09-03 14:04:24 +03:00
karliss
fc83965555
Do not change the internal widget name to preserve layout. (#2418) 2020-09-03 11:57:49 +03:00
karliss
d0a3a042f5
Update Cutter versions and lock decompilers. (#2416) 2020-09-02 19:49:01 +03:00
karliss
ff11944fe0
Update translations. (#2413) 2020-09-01 15:09:32 +03:00
karliss
078f40101f
Handle non ASCII characters in decompiler widget. (#2412) 2020-08-31 19:45:18 +03:00
karliss
503907909f
Create SyntaxHighlighter based on RAnnotatedCode. (#2409) 2020-08-31 09:00:55 +03:00
karliss
6fc902894d
CMake windows python packaging (#2406)
* First version of cpack scripts
* Fix python binding building using CMake on windows
* Package python and pyside in the cpack package
* Run windeployqt as part of packaging to include the Qt dlls and vcruntime installer
2020-08-30 23:23:41 +03:00
Oriol Castejón
2c84e07bfa
Add more options to the Analysis widget (#2405) 2020-08-30 16:17:14 +03:00
NIRMAL MANOJ C
d7ef6e9e91
Save layout of the Decompiler Widgets (#2410)
* Create decompiler widgets when loading a layout
* Do not translate the dock widget names used for saving layout.
2020-08-30 14:26:56 +03:00
NIRMAL MANOJ C
691de14853
Synchronized Decompiler and Enabling Multiple Decompiler Widgets (#2402)
* Sync/Unsync decompiler widgets.

* Add multiple decompiler widgets with its own decompiler and functions.

* updateWindowTitle() in widgets for decompiler, disassembly, and hexdump.
2020-08-29 10:45:47 +05:30
sagcan
ec22b01086
Disable Plugins menu if no plugins are installed (#2318) (#2401) 2020-08-28 21:17:31 +03:00
sagcan
013bdba902
Center 'Rename Function' dialog for Disassembly and Decompiler view (#2408)
Previously the 'Rename Function' dialog would pop-up in the top left
corner if triggered inside the Disassembly or Decompiler view. This
commit changes the behaviour so that the Dialog will now be pop-up in
the center of the MainWindow by simply replacing the 'parent' pointer of
the QInputDialog object with that of the mainWindow (this->mainWindow)
2020-08-28 21:06:52 +03:00
Rachel Mant
1955288058
Add shortcut for Advanced string definition and set focus to size specifier (#2340) 2020-08-25 06:44:33 +03:00
tsunekoh
4fe94cd959
Do not open multiple setting dialogs to fix #2314 (#2392) 2020-08-22 19:49:21 +03:00
NIRMAL MANOJ C
b7d1059a1b Decompiler Documentation + Clean up (#2374) 2020-08-18 23:26:44 +05:30
NIRMAL MANOJ C
1c86f54c95 Edit/Rename Variables Actions for function variables (#2357)
* Edit Function Variables Action

* Rename Function Variables Action

* CutterCore::renameFunctionVariable
2020-08-18 23:26:44 +05:30
NIRMAL MANOJ C
6ed32d5d1d Xrefs action for references (#2352)
* X-Refs for references (functions, global variables, constant variables with addresses) in the decompiler.
2020-08-18 23:26:44 +05:30
NIRMAL MANOJ C
b42a19e995 Display jumping fix useless decompilation (#2351)
* save scroll position and reset to that if the newly decompiled function is the same as the previous one

* instructionChanged signal replaced completely by breakpointsChanged in toggle/add breakpoint functions.

* removed addbreakpoint(QString) and toggleBreakpoint(QString)
2020-08-18 23:26:44 +05:30
NIRMAL MANOJ C
37fc01478f Global variable actions and Show in action and refactoring (#2295)
* Show in action for global variables and functions
* Copy address of global variable or function referenced by the cursor selection
* Rename global variable
2020-08-18 23:26:44 +05:30
NIRMAL MANOJ C
eef9baa300 Action to rename functions in the decompiler context menu (#2286) 2020-08-18 23:26:44 +05:30
NIRMAL MANOJ C
88f837465f Intercept right-click event in the decompiler widget (#2281)
Update cursor before opening context menu for right-click
2020-08-18 23:26:44 +05:30
NIRMAL MANOJ C
8b4c58e07d Comment Menu for the Decompiler Context Menu (#2265) 2020-08-18 23:26:44 +05:30
NIRMAL MANOJ C
a4174271f6 Breakpoint Menu and Debug Menu in the Decompiler Context Menu (#2260) 2020-08-18 23:26:44 +05:30
NIRMAL MANOJ C
ea9f3f1831 Skelton for dedicated context menu + action to copy selection (#2256) 2020-08-18 23:26:44 +05:30
karliss
48192d799a
Get rid of circular include between Cutter.h and CutterPlugin.h (#2390) 2020-08-14 21:30:51 +03:00
yossizap
83cd7e8698
Update R2 submodule (#2378)
* Handle r2 sdb include path changes.
2020-08-13 17:08:39 +03:00
Gireesh
63d3acb8a2
Add "Documentation" button to the "help" menu (#2381) 2020-08-11 15:52:52 +03:00
Oriol Castejón
9e346275c5
Add new Analysis section to the Preferences widget (#2332) 2020-08-10 19:12:38 +03:00
karliss
724d3f26b4
Adjust r2 paths (#2338) 2020-08-08 18:43:43 +03:00
karliss
d6d2e90028
Clazy warnings (#2371)
* Refactor some of the connect calls.
* Refactor more old style signal connect calls.
2020-08-07 17:18:42 +03:00
karliss
c149f38f11
Output colors in rgb:nnnnnn format instead of #nnnnnn. (#2376)
ec name #nnnnnn can get mixed up with comment.
2020-08-07 17:01:50 +03:00
karliss
dcb9970f91
Fix an off by 1 bug during hexwidget cursor blinking. (#2368)
1 pixel line sometimes remained on during hexwidget cursor blinking.
2020-08-04 21:19:17 +03:00
Radwan Selo
2cfa4916c3
Xrefs enhancement (#2362)
* Add number of found results to xrefs dialog
* Hide xref from if the item is not an VA
2020-08-03 20:11:02 +03:00
karliss
8f5fbeddde
Refactor old style macro based signal connect. (#2360) 2020-08-03 12:13:39 +03:00
karliss
45daf2d1d5
Prevent potential crash when opening theme editor dialog. (#2359) 2020-08-02 17:32:17 +03:00
karliss
7c9c7e6fe4
Add symbol exports. (#2345)
* Add symbol exports required for external native plugins to work on Windows
* Make Linux build behave more like Windows so that missing export
annotations can be more easily detected.
2020-08-01 17:14:30 +03:00
NIRMAL MANOJ C
f2a867ca28
Xref for function variables in disassembly view (#2297) 2020-07-28 22:49:50 +03:00
Itay Cohen
e0bfcccb87
Change "Run Script" to "Run radare2 script" (#2330)
* Improve "Run script" title to make it more clear
* Update docs to reflect the change
2020-07-25 20:44:03 +03:00
Jan Deinhard
73f99c696f
Fix sorting resources by index, vaddr and size (#2308)
* Fix sorting resources by index, vaddr and size
2020-07-25 11:32:44 +03:00
karliss
00595da5ab
Update version to 1.11.0. (#2327) 2020-07-24 14:07:07 +03:00
karliss
7ca6a1eda0
Update translation submodule and add the new languages. (#2320) 2020-07-23 21:08:16 +03:00
karliss
a0eb9e3fa9
Remove debug output. (#2315) 2020-07-22 11:57:26 +02:00
karliss
6ba1834f6d
Update version number to 1.11.0-rc1. (#2313) 2020-07-21 22:00:34 +03:00
karliss
249ad7ad0e
Don't use @a: for listing cpus. (#2307)
For some architectures like 8051 doing @a: has sideeffects.
2020-07-21 14:08:35 +03:00
karliss
f92c42d09e
Reset last seen memory widget during layout switching. (#2303) 2020-07-21 12:40:53 +03:00
Itay Cohen
c923576b7e
Fix the "all green" navbar (#2305)
* Specify the search range for search.in
* Add  config_set(key, const char*) overloads to prevent char* being automatically casted to bool and config_set(key, bool) being chosen unexpectedly.
2020-07-20 23:11:31 +03:00
karliss
e14d0d8ef6
Update r2 to 4.5 and fix renamed configuration variables. (#2288) 2020-07-20 15:47:48 +03:00
karliss
65a668943a
Reorganize R2GraphWidget UI (#2298)
* Reorganize R2GraphWidget UI.
2020-07-19 22:00:05 +03:00
karliss
e5d7bd660a
Add more graph widgets (#2273)
* Add generic r2 graph.
* Add Callgraph widgets
* Add more graphviz layouts.
* Fix some edge cases in graphGridLayout that were more likely to appear in callgraphs
* Refactor the code moving some of the logic out of disassemblyGraphWidget making it more reusable
2020-07-16 11:05:10 +03:00
itayc0hen
ca84c3d1dc Bye bye RenameDialog 2020-07-15 17:36:25 +03:00
itayc0hen
02ce60d1af Use QInputDialog in Disassembly context menu 2020-07-15 17:36:25 +03:00
itayc0hen
447d2cfa20 Use QInputDialog in Functions widget 2020-07-15 17:36:25 +03:00
itayc0hen
21aef22c45 Use QInputDialog in Flags widget 2020-07-15 17:36:25 +03:00
itayc0hen
d6edae4ced Remove redundant renaming function in Main Window 2020-07-15 17:36:25 +03:00
itayc0hen
9c0d5d72d1 Use QInputDialog in Classes widget 2020-07-15 17:36:25 +03:00
karliss
2a10a7733f
Update r2 submodule. (#2263) 2020-07-04 17:54:23 +02:00
karliss
8c52627312
Graph optimize placment (#2255)
Add optional placement optimization pass which tries to push everything together and ignores the grid.
2020-07-03 20:09:37 +03:00
Surendrajat
4685f4faaf
Rename a context menu item (#2267) 2020-06-27 21:51:05 +03:00
batuhanakcay
e88ad82968
Implemented No Results Found warning when search result is empty (#2258) 2020-06-24 10:50:51 +03:00
NIRMAL MANOJ C
d26e48f3f5
Fixed Memory Leak in R2DecDecompiler::decompileAt (#2257) 2020-06-20 13:06:13 +03:00
karliss
cd42adc832
Use cmake for linux DEPLOY build. (#2223)
* Add cmake script for building and installing translations.
* Improve APPIMAGE related path handling.
2020-06-17 12:35:26 +03:00
karliss
53da90625c
Add missing includes on VS2019. (#2251) 2020-06-17 11:49:39 +03:00
Surendrajat
7736088ea9
Expose asm.reloff.flags in Preferences (#2244) 2020-06-16 13:54:36 +03:00
karliss
e28ee3bebd
Add options for tweaking graph layout. (#2246)
* Fix overview refresh when switching layout.
2020-06-16 13:43:45 +03:00
karlis
1d8c9de37c Link cutter r2ghidra decompiler against ghidra_core. 2020-06-16 00:27:51 +03:00
NIRMAL MANOJ C
255ffe1208 Refactored Decompiler Widget and R2Dec Plugin to use RAnnotatedCode (#2227) 2020-06-16 00:27:51 +03:00
Surendrajat
498d2076c8
Expose asm.reloff in configuration (#2243)
* Expose asm.reloff in configuration
2020-06-11 19:43:32 +03:00
Itay Cohen
592c050617
Improve warning for multiple x-refs causing unexpected behavior (#2236)
* Improve warning for multiple x-refs causing unexpected behavior
2020-06-07 11:39:58 +03:00
karliss
76773eadd6
Reduce amount of warnings (#2233)
* Deal with QT depracated warnings
2020-06-06 19:02:24 +03:00
karliss
837dd63e6b
Horizontal graph (#2234)
* Create adapter for converting vertical layout into horizontal

* Fix edge spacing override for edges going out of switch statement.

* Update documentation.
2020-06-06 02:06:38 +03:00
bartoszek
56c2e3741a
Fix qt>5.15 build (#2231) 2020-06-04 06:51:03 +03:00
Ali Raheem
7127f0e556
Fix mismatch closing parenthesis (#2232) 2020-06-04 06:41:55 +03:00
karliss
54ecc33ca9
Rewrite part of graph layout code (#2207)
* Rewrite node placement and edge routing parts of graph layout code
* Document the high level structure of layout algorithm
* Tighter layout and less edge crossings
* Better worst case memory and CPU usage
2020-06-03 18:36:44 +03:00
karliss
1e9b82839e
Add documentation for TempConfig. (#2221) 2020-05-31 09:20:54 +03:00
Surendrajat
5dcf53dff6
refactor hexdumpwidget sidepanel parsing (#2222)
Avoid use of magic numbers.
2020-05-30 16:29:29 +03:00