Skip to content

Show errors in top toolbar instead#23

Closed
vadi2 wants to merge 132 commits intoDelwing:errors-button-in-toolbarfrom
vadi2:show-errors-in-top-toolbar
Closed

Show errors in top toolbar instead#23
vadi2 wants to merge 132 commits intoDelwing:errors-button-in-toolbarfrom
vadi2:show-errors-in-top-toolbar

Conversation

@vadi2
Copy link
Copy Markdown

@vadi2 vadi2 commented Jun 23, 2021

Brief overview of PR changes/additions

Show errors in top toolbar instead of the bottom one

Motivation for adding to Mudlet

With 7 buttons at the bottom, it's a bit too many and looks messy

Other info (issues closed, discussion etc)

Kilbukas and others added 5 commits June 20, 2021 23:14
…udlet#5280)

* Refactor the shortcut adjustments out
- not sure why the action text has no tr() anymore but it still works..!

* Join Functions, If to Switch, Shortcut indirection
- removing "unset" function in lieu of an optional bool parameter in "set"
- reworking if/else cascade into a nice switch for readability
- even more readabily: drop much repeated code & set shortcut once at the end

* Revert shortcut indirection
- This could otherwise drop shortcuts from ALL taskbar items. While this seems fair for now, it could have unintended consequences later. So stay as is for now.

* Also use setShortcuts during toolbar creation

* Define toolbar2 items in order of display

* Mention new shortcuts in tool-tips

* Mention new shortcuts in tool-tips

* Finally set toolbar2 shortcuts

* Add header data

* Add header data

* Undo switch, c++ can't handle strings

* Stupid ;

* Forgot ) as well

* tr() necessary after all

* move comment before function

* inverse logic

* typo

* use inversed logic
This was suggested by the Discord User Kaylee#0064 in the
mudlet-development channel on 2021/06/11T18:56Z.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
<bool>false</bool>
<bool>false</bool>
</property>
<property name="text">
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change is just Git noise - if you can manually put it back to the original position it will disappear and make the changeset (slightly) smaller!

🤓

Copy link
Copy Markdown

@SlySven SlySven left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR to @Delwing 's PR is mistitled - as it is it adds the action to show errors to the top menu-bar NOT the top toolbar! 😜

OTOH If one was going to add it to the top toolbar then it should be added to the top menu bar as well anyhow...

@Delwing
Copy link
Copy Markdown
Owner

Delwing commented Jun 26, 2021

I like this idea more.
For future improvement I would even add some notification bubble over icon that there are some NEW errors since last "visit".

github-actions bot and others added 21 commits July 1, 2021 19:24
* (autocommit) Updated text for translation

Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2.1.5 to 2.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v2.1.5...v2.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Sign dmgs with hardened runtime

* Add codesigning via gon

* Fix indentation
…file (Mudlet#5307)

This is so they can be considered when using the search facilities of the
Qt Creator IDE with the qmake project file.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
…5313)

This is done by hiding the connect profile dialogue as quickly as possible
after the load or connect buttons have been clicked (and before the
possibly lengthy profile loading operations commenced). This should close
Mudlet#5303.

Also, it was found that the:
`(void) dlgConnectionProfiles::slot_connectToServer()` slot method was
redundant and could be removed.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
…udlet#5227)

Provide a means to get and set the state of push down buttons (the latter
without executing the associate command or script). It requires adding
members to the `TAction` class to keep track of the `EAction` or
`TFlipButton` instance that is the implementation of the button on a
`TEasyButton` or `TToolBar` respectively. As it happens this showed that
the previous code to regenerate them was creating new buttons each time but
was not deleting the existing ones that were getting replaced.

Also:
* made some members of the `TAtion` class (the name, script and both
commands) private as otherwise there is no point in the setters and getters
also provided!
* simplified the existing `getButtonState()` {that only works within the
script for a button) to remove an unneeded intermediate local (`int`)
value.

Revised to combine ID and name getters and setters for button state

Note that for the getter this is an intermediate stage as is should be
possibble to combine it with the existing `getButtonState()` function that
takes NO arguments but only works within the Lua script for a push-down
button.

Revised to combine new getter functionality into existing getButtonState

This simplifies the UI so that `getButtonState()` works the same as
before but if an button's ID number or "name" is supplied as an argument
the state of the corresponding button (as a boolean though, NOT the
existing and, TBH, odd, integer value 1 or 2, that the original function
produces) is returned. In the event that the matching item is NOT a
push-down button, or that it does not match an existing button then a 'nil'
+ (run-time) error message is returned instead.

Revised to use ID consistently in two functions added/modified in this PR

Refactored to extract code to get TAction instance from {g|s}etButtonState(...)

This was strongly urged upon me by @keneanung & @vadi2 ...!

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
This should close Mudlet#5295 by providing the code that is missing from
`(void) TRoom::readJsonSymbol(...)` - I think it was omitted because the
person who coded the ability to colourise the room symbol text was working
on that whilst I was coding the JSON map handling.

It also fixes:
* a Qt advisory (warning) to use a const reference when using a C++ `for`
loop to iterate through a QJsonArray of custom environements (colors).
* a failure to update the player room indicator when it is changed by
loading a Json Map file.
* a comment in `(void) Host::getPlayerRoomStyleDetails(...)` that is
redundant since we previously removed the mutex for accessors.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
* New translations mudlet-lua.json (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Chinese Traditional)

* New translations mudlet.ts (Finnish)

* New translations mudlet-lua.json (Finnish)

* New translations mudlet.ts (Swedish)

* New translations mudlet-lua.json (Swedish)

* New translations mudlet.ts (Finnish)

* New translations mudlet.ts (Finnish)

* New translations mudlet.ts (Finnish)

* New translations mudlet.ts (Finnish)

* New translations mudlet.ts (Finnish)

* New translations mudlet.ts (Finnish)

* New translations mudlet.ts (Finnish)

* New translations mudlet.ts (Finnish)

* New translations mudlet.ts (Finnish)
Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>
* Add Finnish language to translations

* Update language name
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v2.2.0...v2.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Mudlet#5286)

Providing an empty table as the second argument (i.e. without sets of
sub-tables as x, y, z coordinates) was causing a fatal crash.

This will close issue Mudlet#5272.

Also:
* fix up some other error messages in the addCustomLine function that
  referred to the wrong argument index - or didn't mention which one was
  involved at all.
* silence some warnings in the same function caused by casting floating
  point numbers to integers or down-casting 64-bit `long long int`s to
  (32-bit) `int`s.
* fix handling for the fifth argument NOT being a three-color component
  (RGB) table - so that it throws a `lua_error(...)` if a table is not
  provided - previously it was ignoring this defect.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
)

If compression is disabled the existing message:
"Rejecting MCCP v1, because v2 has already been negotiated or FORCE
COMPRESSION OFF is set to ON."
can be a bit confusing when it is MCCP2 that is not being allowed.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
Profile name comes first so it's easier to differentiate between many open profiles
* Implement new commands selectCmdLineText and Geyser.CommandLine:selectText

* Add exception for linter

* Revert the change

Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
demonnic and others added 27 commits October 2, 2021 11:35
* Add busted tests for gmod module
* Add printDebug and printError lua wrappers around debugc, and error to provide more information, including stacktrace, for your debug and error messages.
* Add links to where the documentation will reside, once it is written.
* Add tests for printDebug and printError
* Make errorc internal only for use by printError, and adjust it so its formatting is more in line with the existing errors messages
* allow errorc to be global if and only if the profile is 'Mudlet self-test' in order for tests to be able to spy on it.
* Make tests work with windows or linux path delimiters
…#5395)

* BugFix: try and make connectExitStub(...) work as per the API

This PR should enable connectExitStub(...) to work as close to the existing
published API as possible:
* connectExitStub((integer) fromRoomID, (integer)toRoomID,
                                             (integer or string) direction)
where direction is the initial(s) or full, lower-case, un-hypenated ENGLISH
word for one of the 12 normal exit directions - this will make a two way
exit between the given direction of the fromRoomID room to the toRoomID
room AND the corresponding reverse direction exit from the toRoomID room.
The rooms need not be the same Area but they must BOTH have stub exits in
the required direction.
* `connectExitStub((integer) fromRoomID, (integer) toRoomID)` - this will
make a two way exit between the fromRoomID room to the toRoomID room AND
the corresponding reverse direction exit from the toRoomID room. The rooms
need not be the same Area but the fromRoomID must have only ONE stub exit
with an opposite (reverse) direction one in the toRoomID one - either room
can have other stub exits. Should there be more than one pair of stub exits
a nil + error message will be produced listing the choices for the
direction that can be passed to the three argument function call to make
the exits wanted.
* `connectExitStub((integer) fromRoomID, (integer or string) dirction)`
- this will make a two way exit between the stub exit in the fromRoomID
room to the NEAREST other room IN THE SAME AREA which has a stub exit in
the reverse direction and which lies in the correct relative position
(except for the `in`/`out` directions where this is not relevant). Should
the direction be given as an integer in the range 1 to 12 this will be
rejected (via a nil + error message) because it is ambiguous then whether
the number represents a direction or a toRoomID. Potentially unlike the
prior code, this version properly detects whether a string or number is
supplied as the direction argument.

Also:
* to allow the reporting of the direction as a number and a string in error
messages the `(QString) TRoom::dirCodeToString(const int)` method has been
made `static` so that it can be used in the `TLuaInterpreter` class.
* as indirectly mentioned above
`(int) TLuaInterpreter::dirToNumber(lua_State*, int)` has been revised to
check for a string or integer argument being examined - the prior code
may not work as anticipated because it used `lua_isxxxx(...)` functions
which can coerce the value they are dealing with (a number can be coerced
into a string) - which messes with the logic.
* in places in the revised methods the integer constant values have been
replaced with the `DIR_XXXXX` values defined in the `TRoom` class header
file.
* to simplify (!) the coding the three different forms of the Lua API are
implemented in three separate `(QString) TMap::connectExitStubByXxxx(...)
methods which collectively replace the original
`(void) TMap::connectExitStub(...)` one. They are responsible for
generating most of the Lua API error messages for this function and they
indicate success by returning an empty string.

This should close Mudlet#2386.

Revise: add a suggestion to the user on how to proceed on a message

Signed-off by: Stephen Lyons <slysven@virginmedia.com>
Co-authored-by: Vadim Peretokin <vperetokin@gmail.com>
* Only enable IRE driver GA bugfix for IRE games

* Review feedback
* Unregister fonts upon package/module uninstall

* Add missing newline
* initial secure IRC

* Update TLuaInterpreter.cpp

* Update TLuaInterpreter.cpp

* applied suuggestions

* missed one

this part made it where if you changed settings while connected then it would not properly connect again

* add tooltip mentioning port number suggestion

Communi desktop client automatically checks the box if you type in 6697, 7000, or 7070.
https://github.com/communi/communi-desktop/blob/master/src/app/connectpage.cpp#L45

RFC 7194 just mentions 6697
Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>
Co-authored-by: mudlet-machine-account <mudlet-machine-account@users.noreply.github.com>
Remove trimmed() from one spot in the tab completion code.  Look closer at it later and see if there is a reason it was there.  Trimmed does front and back, but back comes from the autocomplete dictionary thing so I -think- this is only consequence, unless the suggestion thing includes spaces at the end or something odd like that.  Issue 579.
* use painter event instead of proxy for tab style change

* codefactor

* override painterEvent

* get rid of TStyle class as it is not needed anymore

* try to please clang tidy

* suggestions
…iable (Mudlet#5464)

It turns out that the variable concerned, `__Pick` is a very badly named
(as symbols containing a double underscore or an underscore and followed by
an upper-case letter are explicitly reserved, e.g. see:
https://stackoverflow.com/a/1449301/4805858 )

Fortunately, it isn't needed and there is no need to pass the class member
it is a copy of via the `drawRoom(...)` method in the `T2DMap` class as
that can use the class value directly quite safely - as it never modifies
it.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
This removes the need for the code that uses the `dlgRoomExits` class from
having to also call that class's `init()` method - the room ID for which
the dialogue is being used is now to be provided in the constructor rather
than in the now made private method.

As a side-effect it become obvious that there is no need to provide the
room ID as an argument to the `dlgRoomExit::initExit(...)` method as the
value is already available in the class's member `(int) mRoomID`!

This PR is a part that has been extracted from the draft (and to be
replaced) PR Mudlet#5308 - that is to be broken up into smaller, easier to
digest, chunks! 8-)

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
)

These have no place in C++ code!

Unfortunately there are some in third party bits which can't be fixed here
but should be raised upstream.

This should help with Mudlet#1650.

During review it became necessary to remove some changes that
clang-tidy choked on, hence the revision to the title to say:
"(some of)"! There may be a better way - but it doesn't jump out at
me - to deal with the outstanding ones.

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
…udlet#5501)

As the header file that contains the structure:
`inline static const OrderedMap<QString, GameDetails> scmDefaultGames`
is used by so many other classes it causes nearly one hundred compile
time warnings (50 each) of these:
`missing initializer for member 'mudlet::GameDetails::websiteInfo'
  [-Wmissing-field-initializers]`
`missing initializer for member 'mudlet::GameDetails::icon'
  [-Wmissing-field-initializers]`

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
…short + add position as option for setTitle (Mudlet#5493)

* get rid of shrink_title and add position to title

* Update GeyserAdjustableContainer.lua

* change position to format

* resetTitle should really reset the title now
* Add workflow to run Danger checks
* Add danger checks in JS
* Update CONTRIBUTING with new PR standards being enforced via Danger in this PR
* Update workflows which open PRs to have their titles conform to the new PR title rules
* Improve PTB changelog generation
* Make the headings actually headings, and remove the extra breaks. Remove commented out code.
* Make it look more like our last release post changelogs
…ipt. (Mudlet#5508)

* Remove emoji from the ptb changelog, as it turns out they are not rendered properly
* Adjust changelog not to include categories with no changes in them
…xits (Mudlet#5505)

This will make changing/adding the columns easier as part of what was
created as the draft (and to be replaced) PR Mudlet#5308 - that is to be broken
up into smaller, easier to digest, chunks! 8-)

There is a single set of constants which are defined in the `exitstreewidget`
class but used also by the `dlgRoomExit` one by virtue of making it a friend
of the former.

As it happens I spotted the need for both classes to have these constants
when I reviewed `(void) ExitsTreeWidget::keyPressEvent(QKeyEvent*)`
and spotted that I had not revised it to close the correct persistent editors
in the merge commit 83db9f9 (part of PR Mudlet#439) seven years ago!

This will make changing/adding the columns easier as part of what was

Revised slightly (converted an empty switch "default:" case from a `;`
to a `{}`) to placate the CodeFactor god/daemon...!

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
### This is for LINUX only!

This pulls in changes for Unicode 13.1. It also will remove older versions
of the font that prior versions of Mudlet will place in its own bit of the
file-system so that the FontManager class will not try to load more than
one instance of a font with an identical "family name" (which it will not
IIRC).

Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
@vadi2
Copy link
Copy Markdown
Author

vadi2 commented Oct 13, 2021

Done as Mudlet#5511.

@vadi2 vadi2 closed this Oct 13, 2021
Delwing pushed a commit that referenced this pull request Feb 3, 2026
…rocessing (Mudlet#8571)

<!-- Keep the title short & concise so anyone non-technical can
understand it,
     the title appears in PTB changelogs -->
#### Brief overview of PR changes/additions
Fix: heap-use-after-free when cleanup runs during alias/trigger/key
processing
#### Motivation for adding to Mudlet
Fixes crash when running
Mudlet#8559 (comment)
benchmark on Linux.
#### Other info (issues closed, discussion etc)
==617553==ERROR: AddressSanitizer: heap-use-after-free on address
0x51200086e6d0 at pc 0x589b650367f6 bp 0x7ffc44dbc700 sp 0x7ffc44dbc6f8
READ of size 8 at 0x51200086e6d0 thread T0
#0 0x589b650367f5 in Tree<TAlias>::isActive() const
(/home/vadi/Programs/Mudlet/build/src/mudlet+0xe8a7f5) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#1 0x589b65d81408 in TAlias::match(QString const&)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd5408) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#2 0x589b6560c156 in AliasUnit::processDataStream(QString const&)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1460156) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#3 0x589b65c872b4 in Host::send(QString, bool, bool)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1adb2b4) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#4 0x589b65d96517 in TCommandLine::enterCommand(QKeyEvent*)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bea517) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#5 0x589b65d93095 in TCommandLine::event(QEvent*)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1be7095) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#6 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*,
QEvent*)
/home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31
#7 0x7ac66839b2f0 in QApplication::notify(QObject*, QEvent*)
/home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:2725:39
#8 0x7ac668b83f7f in QCoreApplication::notifyInternal2(QObject*,
QEvent*)
/home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109:24
#9 0x7ac66840cc0b in QWidgetWindow::event(QEvent*)
/home/qt/work/qt/qtbase/src/widgets/kernel/qwidgetwindow.cpp:285:23
#10 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*,
QEvent*)
/home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31
#11 0x7ac668b83f7f in QCoreApplication::notifyInternal2(QObject*,
QEvent*)
/home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109:24
#12 0x7ac6677ee8e2 in
QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*)
/home/qt/work/qt/qtbase/src/gui/kernel/qguiapplication.cpp:2609:46
#13 0x7ac655cf9a04 in
QIBusPlatformInputContext::filterEventFinished(QDBusPendingCallWatcher*)
/home/qt/work/qt/qtbase/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp:523:57
#14 0x7ac668be8b74 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
/home/qt/work/qt/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461:57
#15 0x7ac668be8b74 in void doActivate<false>(QObject*, int, void**)
/home/qt/work/qt/qtbase/src/corelib/kernel/qobject.cpp:4255:30
#16 0x7ac6671e5142 in void QMetaObject::activate<void,
QDBusPendingCallWatcher*>(QObject*, QMetaObject const*, int, void*,
QDBusPendingCallWatcher* const&)
/home/qt/work/qt/qtbase/src/corelib/kernel/qobjectdefs.h:319:17
#17 0x7ac6671e5142 in
QDBusPendingCallWatcher::finished(QDBusPendingCallWatcher*)
/home/qt/work/qt/qtbase_build/src/dbus/DBus_autogen/include/moc_qdbuspendingcall.cpp:137:32
#18 0x7ac668bdd56b in QObject::event(QEvent*)
/home/qt/work/qt/qtbase/src/corelib/kernel/qobject.cpp:1411:31
#19 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*,
QEvent*)
/home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31
#20 0x7ac668b83f7f in QCoreApplication::notifyInternal2(QObject*,
QEvent*)
/home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109:24
#21 0x7ac668b879e4 in
QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
/home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1904:36
#22 0x7ac668e7d416 in postEventSourceDispatch
/home/qt/work/qt/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246:39
#23 0x7ac6667145c4 (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5d5c4)
(BuildId: 1eb6131419edb83b2178b682829a6913cf682d75)
#24 0x7ac666773736 (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0xbc736)
(BuildId: 1eb6131419edb83b2178b682829a6913cf682d75)
#25 0x7ac666713a62 in g_main_context_iteration
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5ca62) (BuildId:
1eb6131419edb83b2178b682829a6913cf682d75)
#26 0x7ac668e7caad in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
/home/qt/work/qt/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399:43
#27 0x7ac668b9002a in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
/home/qt/work/qt/qtbase/src/corelib/kernel/qeventloop.cpp:186:22
#28 0x7ac668b8ba59 in QCoreApplication::exec()
/home/qt/work/qt/qtbase/src/corelib/kernel/qcoreapplication.cpp:1452:36
#29 0x589b64ab0675 in main
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x904675) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#30 0x7ac66602a1c9 in __libc_start_call_main
csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#31 0x7ac66602a28a in __libc_start_main csu/../csu/libc-start.c:360:3
#32 0x589b649c1d04 in _start
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x815d04) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)

0x51200086e6d0 is located 16 bytes inside of 296-byte region
[0x51200086e6c0,0x51200086e7e8)
freed by thread T0 here:
#0 0x589b64a9b9f1 in operator delete(void*)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x8ef9f1) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#1 0x589b65d80711 in TAlias::~TAlias()
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd4711) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#2 0x589b6560eefc in AliasUnit::doCleanup()
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1462efc) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#3 0x589b65c8e88d in Host::incomingStreamProcessor(QString const&, int)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1ae288d) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#4 0x589b651b73b5 in TMainConsole::runTriggers(int)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x100b3b5) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#5 0x589b64e39c4b in TBuffer::commitLine(char, unsigned long&)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0xc8dc4b) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#6 0x589b64e28d4e in
TBuffer::translateToPlainText(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char>>&, bool)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0xc7cd4e) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#7 0x589b651b638d in
TMainConsole::printOnDisplay(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char>>&, bool)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x100a38d) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#8 0x589b64f9ed5b in TLuaInterpreter::feedTriggers(lua_State*)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0xdf2d5b) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#9 0x7ac66942ffa0 in luaD_precall
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:320:10
#10 0x7ac66943ad7a in luaV_execute
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/lvm.c:591:17
#11 0x7ac66942e96c in luaD_call
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:378:5
#12 0x7ac66942af70 in luaD_rawrunprotected
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:116:3
#13 0x7ac66942bb94 in luaD_pcall
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:464:12
#14 0x7ac66942bce0 in lua_pcall
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/lapi.c:821:12
#15 0x589b64fd65f1 in TLuaInterpreter::call(QString const&, QString
const&, bool) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xe2a5f1)
(BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#16 0x589b65d84d31 in TAlias::execute()
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd8d31) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#17 0x589b65d84577 in TAlias::match(QString const&)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd8577) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#18 0x589b6560c156 in AliasUnit::processDataStream(QString const&)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1460156) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#19 0x589b65c872b4 in Host::send(QString, bool, bool)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1adb2b4) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#20 0x589b65d96517 in TCommandLine::enterCommand(QKeyEvent*)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bea517) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#21 0x589b65d93095 in TCommandLine::event(QEvent*)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1be7095) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#22 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*,
QEvent*)
/home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31

previously allocated by thread T0 here:
#0 0x589b64a9b171 in operator new(unsigned long)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x8ef171) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#1 0x589b6500f595 in TLuaInterpreter::startTempAlias(QString const&,
QString const&) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xe63595)
(BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#2 0x589b6512c41d in TLuaInterpreter::tempAlias(lua_State*)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0xf8041d) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#3 0x7ac66942ffa0 in luaD_precall
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:320:10
#4 0x7ac66943ad7a in luaV_execute
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/lvm.c:591:17
#5 0x7ac66942e96c in luaD_call
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:378:5
#6 0x7ac66942af70 in luaD_rawrunprotected
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:116:3
#7 0x7ac66942bb94 in luaD_pcall
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/ldo.c:464:12
#8 0x7ac66942bce0 in lua_pcall
/build/lua5.1-rMDsVj/lua5.1-5.1.5/src/lapi.c:821:12
#9 0x589b64fd65f1 in TLuaInterpreter::call(QString const&, QString
const&, bool) (/home/vadi/Programs/Mudlet/build/src/mudlet+0xe2a5f1)
(BuildId: c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#10 0x589b65d84d31 in TAlias::execute()
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd8d31) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#11 0x589b65d84577 in TAlias::match(QString const&)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bd8577) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#12 0x589b6560c156 in AliasUnit::processDataStream(QString const&)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1460156) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#13 0x589b65c872b4 in Host::send(QString, bool, bool)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1adb2b4) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#14 0x589b65d96517 in TCommandLine::enterCommand(QKeyEvent*)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1bea517) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#15 0x589b65d93095 in TCommandLine::event(QEvent*)
(/home/vadi/Programs/Mudlet/build/src/mudlet+0x1be7095) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4)
#16 0x7ac668391c8a in QApplicationPrivate::notify_helper(QObject*,
QEvent*)
/home/qt/work/qt/qtbase/src/widgets/kernel/qapplication.cpp:3307:31

SUMMARY: AddressSanitizer: heap-use-after-free
(/home/vadi/Programs/Mudlet/build/src/mudlet+0xe8a7f5) (BuildId:
c98a5e4208b6daa52aa1b083c4ee6c4ab4552cc4) in Tree<TAlias>::isActive()
const
Shadow bytes around the buggy address:
  0x51200086e400: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x51200086e480: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa
  0x51200086e500: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x51200086e580: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x51200086e600: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa
=>0x51200086e680: fa fa fa fa fa fa fa fa fd fd[fd]fd fd fd fd fd
  0x51200086e700: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x51200086e780: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa
  0x51200086e800: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x51200086e880: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x51200086e900: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==617553==ABORTING

Co-authored-by: Vadim Peretokin <vadi2@users.noreply.github.com>
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.