kwin/libkdecorations
Raphael Kubo da Costa 92a4cdd9e7 Remove assertion in KDecorationUnstable's constructor.
Follow-up to c146941, which stopped exporting KDecorationBridgeUnstable.

The way the typeinfo and object comparisons are performed in a dynamic_cast
are not entirely defined in any ABI spec (or the C++ standard), and the
situation gets trickier when a hidden symbol (KDecorationBridgeUnstable)
gets passed between a program such as kwin or kcmshell4 and a dlopen()ed
library like kwin3_laptop.so: kwin is unaware of the symbol in
kwin3_laptop.so and vice-versa, so stricter implementations of the C++
runtime can choose to make the dynamic_cast call fail and return 0.

This was a source of crashes on GCC for a long time [1][2] until its
developers chose to make the typeinfo comparison in libstdc++ >= 4.5.x less
strict and just perform a string comparison of the type names by default.

[1] http://article.gmane.org/gmane.comp.gcc.patches/189813
[2] http://gcc.gnu.org/ml/gcc/2002-05/msg01970.html

It does not make things more correct, though, and after c146941 KWin started
crashing when built in debug mode and run with libcxxrt, another C++ runtime
implementation, since it performed a stricted typeinfo comparison by
default.

Simply removing the dynamic_cast should be fine: it is in an assertion, so
the code is not essential, and the assertion itself is not entirely correct.
Additionally, the assertion has already been removed from the master branch
in commit 4702bbd.

REVIEW:		113296
2013-10-20 17:37:18 +03:00
..
CMakeLists.txt KDecorationBridge becomes private again 2013-03-22 09:09:48 +01:00
kcommondecoration.cpp s/KLocale/KLocalizedString/g 2013-03-07 13:59:15 +01:00
kcommondecoration.h Strip module path from all Qt #include <> 2013-03-06 10:26:56 +01:00
kcommondecoration_p.cpp Pass the parameter passed to KDecoration::region() to KCommonDecoration 2012-11-24 11:35:29 +01:00
kcommondecoration_p.h added necessary changes to enable ::region() slot for kcommondecoration 2012-11-09 18:03:33 +01:00
kdecoration.cpp Remove assertion in KDecorationUnstable's constructor. 2013-10-20 17:37:18 +03:00
kdecoration.h Use signal/slots instead of deep function calls into decoration 2013-05-07 16:53:58 +02:00
kdecoration_p.cpp remove moveResizeMaximized option 2013-03-24 22:26:48 +01:00
kdecoration_p.h remove moveResizeMaximized option 2013-03-24 22:26:48 +01:00
kdecoration_plugins_p.cpp Move decoration related methods from Workspace to DecorationPlugin 2013-04-15 09:59:09 +02:00
kdecoration_plugins_p.h Move decoration related methods from Workspace to DecorationPlugin 2013-04-15 09:59:09 +02:00
kdecorationbridge.h remove moveResizeMaximized option 2013-03-24 22:26:48 +01:00
kdecorationfactory.cpp
kdecorationfactory.h
Mainpage.dox
Messages.sh