Files
odfstudio/filter
Miklos Vajna 984b18cbf8 filter: fix crash in PDFDialog::executedDialog()
Crashreport backtrace:

	#0  0x00007d8e166943f0 in lcl_GetConfigPropertyMap()::aConfigPropertyMap_Impl () from /opt/collaboraoffice/program/../program/libsclo.so
	#1  0x00007d8e1876047a in cppu::WeakImplHelper<com::sun::star::ui::dialogs::XExecutableDialog, com::sun::star::lang::XServiceInfo, com::sun::star::lang::XInitialization>::release (
	    this=0x5a9aec60) at /home/collabora/jenkins/workspace/build_core_co-25.04_for_online_snapshot/include/cppuhelper/implbase.hxx:115
	#2  svt::OGenericUnoDialog::release (this=0x5a9aec60) at /home/collabora/jenkins/workspace/build_core_co-25.04_for_online_snapshot/include/svtools/genericunodialog.hxx:80
	#3  cppu::ImplInheritanceHelper<svt::OGenericUnoDialog, com::sun::star::ui::dialogs::XAsynchronousExecutableDialog>::release (this=0x5a9aec60)
	    at /home/collabora/jenkins/workspace/build_core_co-25.04_for_online_snapshot/include/cppuhelper/implbase.hxx:171
	#4  cppu::ImplInheritanceHelper<svt::OGenericUnoAsyncDialog<SfxTabDialogController>, com::sun::star::beans::XPropertyAccess, com::sun::star::document::XExporter>::release (this=0x5a9aec60)
	    at /home/collabora/jenkins/workspace/build_core_co-25.04_for_online_snapshot/include/cppuhelper/implbase.hxx:171
	#5  rtl::Reference<PDFDialog>::~Reference (this=<synthetic pointer>, __in_chrg=<optimized out>)
	    at /home/collabora/jenkins/workspace/build_core_co-25.04_for_online_snapshot/include/rtl/ref.hxx:126
	#6  operator() (nResponse=<optimized out>, __closure=<optimized out>) at /home/collabora/jenkins/workspace/build_core_co-25.04_for_online_snapshot/filter/source/pdf/pdfdialog.cxx:88

Calling into sc/ sounds like a broken vtable, possibly just reading
already freed memory.

The potential problem is that by the time the lambda in
PDFDialog::runAsync() would try to keep 'this' alive, it's gone already.
Try to fix that by moving the keep alive variable to the caller, so the
lambda increases the refcount.

Change-Id: Ida39f6fda976ddc044bb92e839de125fdae4fc2d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203059
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204057
Tested-by: Jenkins
2026-04-23 13:44:08 +02:00
..
…
…

LibreOffice Filters

Filter registration and some simple filters (also descriptions).

Desperate splitting of code into small shared libraries for historical reasons presumably (OS/2 and Windows 3.x). The libraries produced from the code in each subdirectory of filter/source/graphicfilter are graphic format import or export filters. But they don't have uniform API. Some have either a GraphicImport or GraphicExport entry point, and are loaded and used in a uniform fashion from code in svtools/source/filter/filter.cxx. Others have different API and are loaded from other places. For instance icgm has ImportCGM, and is loaded and used by sd/source/filter/cgm/sdcgmfilter.cxx (!). Svgreader is used for "File -> Open" and then to choose the svg file. For "Insert -> Picture -> From File", see svgio/source/svgreader directory.

Filter Configuration

The filter configuration consists of two parts, the type definition in filter/source/config/fragments/types/ and the actual filter definition in filter/source/config/fragments/filters/.

Each file type e.g. text file should be represented by exactly one type definition. This type can then be referenced by several different filters, e.g. calc text, writer text.