[Libreoffice-commits] core.git: Branch 'libreoffice-6-3' - sd/source
Stephan Bergmann (via logerrit)
logerrit at kemper.freedesktop.org
Wed Sep 25 19:03:37 UTC 2019
sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit a3216f41684ff039d96d0f6fce1e0ec9da65d91e
Author: Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Mon Sep 9 11:54:04 2019 +0200
Commit: Stephan Bergmann <sbergman at redhat.com>
CommitDate: Wed Sep 25 21:02:56 2019 +0200
Fix stack-use-after-return when moving a slide in the list
...very far, so that the list needs to scroll:
> ==1676==ERROR: AddressSanitizer: stack-use-after-return on address 0x7f039a1e6420 at pc 0x7f03c34e0658 bp 0x7ffede26b140 sp 0x7ffede26b138
> READ of size 8 at 0x7f039a1e6420 thread T0
> #0 in Point::X() const at include/tools/gen.hxx:78:44 (instdir/program/libvcllo.so +0x5cf6657)
> #1 in OutputDevice::PixelToLogic(Point const&) const at vcl/source/outdev/map.cxx:1191:47
> #2 in sd::slidesorter::controller::DragAndDropContext::UpdatePosition(Point const&, sd::slidesorter::controller::InsertionIndicatorHandler::Mode, bool) at sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx:84:47
> #3 in sd::slidesorter::controller::DragAndDropContext::UpdatePosition(Point const&, sd::slidesorter::controller::InsertionIndicatorHandler::Mode, bool)::$_0::operator()() const at sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx:92:34
> #4 in void std::__invoke_impl<void, sd::slidesorter::controller::DragAndDropContext::UpdatePosition(Point const&, sd::slidesorter::controller::InsertionIndicatorHandler::Mode, bool)::$_0&>(std::__invoke_other, sd::slidesorter::controller::DragAndDropContext::UpdatePosition(Point const&, sd::slidesorter::controller::InsertionIndicatorHandler::Mode, bool)::$_0&) at gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/invoke.h:60:14
> #5 in std::enable_if<is_invocable_r_v<void, sd::slidesorter::controller::DragAndDropContext::UpdatePosition(Point const&, sd::slidesorter::controller::InsertionIndicatorHandler::Mode, bool)::$_0&>, void>::type std::__invoke_r<void, sd::slidesorter::controller::DragAndDropContext::UpdatePosition(Point const&, sd::slidesorter::controller::InsertionIndicatorHandler::Mode, bool)::$_0&>(sd::slidesorter::controller::DragAndDropContext::UpdatePosition(Point const&, sd::slidesorter::controller::InsertionIndicatorHandler::Mode, bool)::$_0&) at gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/invoke.h:110:2
> #6 in std::_Function_handler<void (), sd::slidesorter::controller::DragAndDropContext::UpdatePosition(Point const&, sd::slidesorter::controller::InsertionIndicatorHandler::Mode, bool)::$_0>::_M_invoke(std::_Any_data const&) at gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/std_function.h:291:9
> #7 in std::function<void ()>::operator()() const at gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/std_function.h:622:14
> #8 in sd::slidesorter::controller::ScrollBarManager::RepeatAutoScroll() at sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx:518:17
> #9 in sd::slidesorter::controller::ScrollBarManager::AutoScrollTimeoutHandler(Timer*) at sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx:539:5
> #10 in sd::slidesorter::controller::ScrollBarManager::LinkStubAutoScrollTimeoutHandler(void*, Timer*) at sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx:537:1
> #11 in Link<Timer*, void>::Call(Timer*) const at include/tools/link.hxx:112:45
> #12 in Timer::Invoke() at vcl/source/app/timer.cxx:75:21
> #13 in Scheduler::ProcessTaskScheduling() at vcl/source/app/scheduler.cxx:479:20
> #14 in Scheduler::CallbackTaskScheduling() at vcl/source/app/scheduler.cxx:287:5
> #15 in SalTimer::CallCallback() at vcl/inc/saltimer.hxx:54:13
> #16 in sal_gtk_timeout_dispatch(_GSource*, int (*)(void*), void*) at vcl/unx/gtk3/gtk3gtkdata.cxx:761:45
> #17 in g_main_dispatch at ../glib/gmain.c:3189:28
> [...]
> Address 0x7f039a1e6420 is located in stack of thread T0 at offset 32 in frame
> #0 in sd::slidesorter::controller::SelectionFunction::MouseDragged(AcceptDropEvent const&, signed char) at sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx:630 (instdir/program/../program/libsdlo.so +0x5c22e1f)
> This frame has 1 object(s):
> [32, 104) 'aEventDescriptor' (line 631) <== Memory access at offset 32 is inside this variable
> HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
> (longjmp and C++ exceptions *are* supported)
Presumably a regression introduced with 26912eea7521dd2b84bfac56b322cf0f8b142450
"sd: replace boost::bind with C++11 lambdas and for loops", assuming that
boost::bind bound rMousePosition by value.
Change-Id: I4cefc5974b7377ff4918d59b51fc8cda41292702
Reviewed-on: https://gerrit.libreoffice.org/78774
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
(cherry picked from commit 833c23264b532e34e050e3b8747c02ede6bf7350)
Reviewed-on: https://gerrit.libreoffice.org/79553
Reviewed-by: Michael Stahl <michael.stahl at cib.de>
diff --git a/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx b/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx
index 770fb1ba6cf5..73dac8561b07 100644
--- a/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx
@@ -96,7 +96,7 @@ void DragAndDropContext::UpdatePosition (
bool bDoAutoScroll = bAllowAutoScroll
&& mpTargetSlideSorter->GetController().GetScrollBarManager().AutoScroll(
rMousePosition,
- [this, eMode, &rMousePosition] () {
+ [this, eMode, rMousePosition] () {
return this->UpdatePosition(rMousePosition, eMode, false);
});
More information about the Libreoffice-commits
mailing list