[Libreoffice-commits] core.git: Branch 'feature/glyphy' - 478 commits - avmedia/source basctl/source basebmp/test basic/qa basic/source bean/com bean/qa binaryurp/source bin/get-bugzilla-attachments-by-mimetype bridges/Library_cpp_uno.mk bridges/test canvas/source chart2/qa chart2/source cli_ure/source codemaker/source comphelper/inc comphelper/qa comphelper/source compilerplugins/clang config_host/config_global.h.in config_host.mk.in configmgr/qa configmgr/source configure.ac connectivity/qa connectivity/source cppcanvas/source cppuhelper/source cppu/source cpputools/source cui/source cui/uiconfig dbaccess/qa dbaccess/source desktop/inc desktop/qa desktop/source distro-configs/Jenkins download.lst drawinglayer/source dtrans/source editeng/qa editeng/source embeddedobj/source eventattacher/source extensions/qa extensions/source external/glyphy external/icu external/liblangtag external/Module_external.mk filter/CppunitTest_filter_dxf_test.mk filter/CppunitTest_filter_eps_test.mk filter/CppunitTest _filter_met_test.mk filter/CppunitTest_filter_pcd_test.mk filter/CppunitTest_filter_pcx_test.mk filter/CppunitTest_filter_pict_test.mk filter/CppunitTest_filter_ppm_test.mk filter/CppunitTest_filter_psd_test.mk filter/CppunitTest_filter_ras_test.mk filter/CppunitTest_filter_tga_test.mk filter/CppunitTest_filter_tiff_test.mk filter/Library_egi.mk filter/Library_eme.mk filter/Library_epb.mk filter/Library_epg.mk filter/Library_epp.mk filter/Library_eps.mk filter/Library_ept.mk filter/Library_era.mk filter/Library_eti.mk filter/Library_exp.mk filter/Library_gie.mk filter/Library_icd.mk filter/Library_idx.mk filter/Library_ime.mk filter/Library_ipb.mk filter/Library_ipd.mk filter/Library_ips.mk filter/Library_ipt.mk filter/Library_ipx.mk filter/Library_ira.mk filter/Library_itg.mk filter/Library_iti.mk filter/Module_filter.mk filter/qa filter/source forms/qa forms/source formula/source fpicker/source framework/inc framework/qa framework/source helpcompiler/inc helpcompiler/source helpco ntent2 hwpfilter/source i18npool/inc i18npool/Library_localedata_others.mk i18npool/qa i18npool/source i18nutil/source icon-themes/galaxy icon-themes/sifr idlc/source include/canvas include/comphelper include/cppuhelper include/drawinglayer include/editeng include/framework include/LibreOfficeKit include/o3tl include/oox include/rtl include/sfx2 include/svx include/toolkit include/tools include/vcl include/xmloff io/source io/test javaunohelper/com javaunohelper/source javaunohelper/test jurt/com jvmfwk/Library_jvmfwk.mk jvmfwk/plugins jvmfwk/source l10ntools/source libreofficekit/qa libreofficekit/source lingucomponent/source linguistic/qa linguistic/source lotuswordpro/qa lotuswordpro/source m4/libo_externals.m4 Makefile.fetch mysqlc/source nlpsolver/src offapi/com officecfg/registry onlineupdate/Executable_mar.mk onlineupdate/source oox/source package/source pyuno/source qadevOOo/runner qadevOOo/tests registry/tools reportbuilder/java reportdesign/source RepositoryExternal.mk Rep ository.mk ridljar/test sal/CppunitTest_sal_rtl_ref.mk sal/Module_sal.mk sal/osl sal/qa sal/rtl sax/source sax/test scaddins/source sc/inc sc/Library_sc.mk sc/qa scripting/java scripting/source sc/sdi sc/source sc/uiconfig sc/UIConfig_scalc.mk sd/CppunitTest_sd_svg_export_tests.mk sdext/source sd/inc sd/Module_sd.mk sd/qa sd/source sd/uiconfig sd/xml sfx2/source shell/source slideshow/opengl slideshow/Package_opengl.mk slideshow/source slideshow/test smoketest/smoketest.cxx solenv/gbuild sot/source starmath/inc starmath/source stoc/source stoc/test svgio/source svl/source svtools/source svtools/uiconfig svx/inc svx/Library_svxcore.mk svx/source svx/workben swext/mediawiki sw/inc sw/qa sw/source sw/uiconfig test/source testtools/source toolkit/inc toolkit/source toolkit/test tools/inc tools/qa tools/source ucbhelper/source ucb/source udkapi/com unodevtools/source unoidl/source unotest/source unotools/qa unotools/source unoxml/qa unoxml/source uui/source vbahelper/source vcl/generic v cl/inc vcl/Library_vcl.mk vcl/osx vcl/qa vcl/quartz vcl/README.vars vcl/source vcl/unx vcl/workben winaccessibility/source wizards/com writerfilter/qa writerfilter/source xmerge/source xmlhelp/source xmloff/inc xmloff/source xmloff/util xmlscript/source xmlsecurity/source xmlsecurity/workben

Tor Lillqvist tml at collabora.com
Mon Nov 9 21:39:09 PST 2015


Rebased ref, commits from common ancestor:
commit 9d97bf50ee7d8cf157f4bab3bb0a19ea6a918a51
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Nov 2 22:29:23 2015 +0200

    The glyphy configury takes no --enable/disable-debug option
    
    Change-Id: Id098945656c0d97a0fc11efb42a0d09efb3e5557

diff --git a/external/glyphy/ExternalProject_glyphy.mk b/external/glyphy/ExternalProject_glyphy.mk
index 463cb81..6243187 100644
--- a/external/glyphy/ExternalProject_glyphy.mk
+++ b/external/glyphy/ExternalProject_glyphy.mk
@@ -29,7 +29,6 @@ $(call gb_ExternalProject_get_state_target,glyphy,build) :
 			, \
 				--enable-shared --disable-static \
 			) \
-			$(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
 			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
 			$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
 		&& $(if $(verbose),V=1) \
commit 1c4859722b2ebb9cd8b0db0b6fdf734eead64db7
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Nov 2 22:28:29 2015 +0200

    We (unintentionally?) build a static archive with MSVC
    
    Change-Id: Ief0ccec4b63e2ac767285f4c19175fa000eaad6c

diff --git a/external/glyphy/ExternalPackage_glyphy.mk b/external/glyphy/ExternalPackage_glyphy.mk
index cbae840..b4a32fc 100644
--- a/external/glyphy/ExternalPackage_glyphy.mk
+++ b/external/glyphy/ExternalPackage_glyphy.mk
@@ -13,6 +13,8 @@ $(eval $(call gb_ExternalPackage_use_external_project,glyphy,glyphy))
 
 ifeq ($(OS),MACOSX)
 $(eval $(call gb_ExternalPackage_add_file,glyphy,$(LIBO_LIB_FOLDER)/libglyphy.dylib,src/.libs/libglyphy.dylib))
+else ifeq ($(OS),WNT)
+# We build a static archive with MSVC, so nothing to add
 else ifeq ($(DISABLE_DYNLOADING),)
 $(eval $(call gb_ExternalPackage_add_file,glyphy,$(LIBO_LIB_FOLDER)/libglyphy.so.0,src/.libs/libglyphy.so.0.0.0))
 endif
commit 8ef19fe4c28fe55c3f74cfdf6675afaa30eec333
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Nov 2 22:27:24 2015 +0200

    Need _USE_MATH_DEFINES with MSVC for M_PI_2
    
    Change-Id: Ieb7671480b88304a94066965d10d455865915090

diff --git a/external/glyphy/ExternalProject_glyphy.mk b/external/glyphy/ExternalProject_glyphy.mk
index 1eda015..463cb81 100644
--- a/external/glyphy/ExternalProject_glyphy.mk
+++ b/external/glyphy/ExternalProject_glyphy.mk
@@ -21,6 +21,7 @@ $(eval $(call gb_ExternalProject_use_externals,glyphy, \
 
 $(call gb_ExternalProject_get_state_target,glyphy,build) :
 	$(call gb_ExternalProject_run,build,\
+	    $(if $(filter MSC,$(COM)),CPPFLAGS=-D_USE_MATH_DEFINES) \
 		MAKE=$(MAKE) ./configure \
 			--with-pic \
 			$(if $(DISABLE_DYNLOADING), \
commit 424bf08e677e7644293ca45c0ad43df6dddeb2dd
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Nov 2 18:14:10 2015 +0200

    Fix some thinkos or copy-paste mistakes for glyphy
    
    Change-Id: Ie008086c2a34081c9f50a61808b73b66eda58e2c

diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index e4e8b03..9cadb13 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -288,14 +288,14 @@ endef
 
 endif # SYSTEM_GLEW
 
-$(eval $(call gb_Helper_register_packages_for_install,ooo,\
-	liborcus \
-))
-
-ifneq ($(SYSTEM_GLEW),)
+ifneq ($(SYSTEM_GLYPHY),)
 
 else # !SYSTEM_GLYPHY
 
+$(eval $(call gb_Helper_register_packages_for_install,ooo,\
+	glyphy \
+))
+
 define gb_LinkTarget__use_glyphy
 $(call gb_LinkTarget_use_package,$(1),glyphy)
 
@@ -310,7 +310,7 @@ $(call gb_LinkTarget_add_libs,$(1),\
 
 endef
 
-endif GLYPHY
+endif # SYSTEM_GLYPHY
 
 define gb_LinkTarget__use_iconv
 $(call gb_LinkTarget_add_libs,$(1),-liconv)
diff --git a/config_host.mk.in b/config_host.mk.in
index d04374a..cde8e90 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -525,6 +525,7 @@ export SYSTEM_GENCCODE=@SYSTEM_GENCCODE@
 export SYSTEM_GENCMN=@SYSTEM_GENCMN@
 export SYSTEM_GLEW=@SYSTEM_GLEW@
 export SYSTEM_GLM=@SYSTEM_GLM@
+export SYSTEM_GLYPHY=@SYSTEM_GLYPHY@
 export SYSTEM_GRAPHITE=@SYSTEM_GRAPHITE@
 export SYSTEM_HARFBUZZ=@SYSTEM_HARFBUZZ@
 export SYSTEM_HSQLDB=@SYSTEM_HSQLDB@
diff --git a/external/Module_external.mk b/external/Module_external.mk
index 9daf548..7c78c7d 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -45,6 +45,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
 	$(call gb_Helper_optional,FREETYPE,freetype) \
 	$(call gb_Helper_optional,GLEW,glew) \
 	$(call gb_Helper_optional,GLM,glm) \
+	$(call gb_Helper_optional,GLYPHY,glyphy) \
 	$(call gb_Helper_optional,GRAPHITE,graphite) \
 	$(call gb_Helper_optional,HARFBUZZ,harfbuzz) \
 	$(call gb_Helper_optional,HSQLDB,hsqldb) \
diff --git a/external/glyphy/Module_glyphy.mk b/external/glyphy/Module_glyphy.mk
index 084c542..6228bba 100644
--- a/external/glyphy/Module_glyphy.mk
+++ b/external/glyphy/Module_glyphy.mk
@@ -9,7 +9,7 @@
 
 $(eval $(call gb_Module_Module,glyphy))
 
-$(eval $(call gb_Module_add_targets,liborcus,\
+$(eval $(call gb_Module_add_targets,glyphy,\
 	UnpackedTarball_glyphy \
 ))
 
commit 3b16ce57ad11c769a22067df4b8f0734c399c3cc
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Wed Oct 14 15:06:55 2015 +0200

    link vcl against libglyphy
    
    Change-Id: I5b206f5d857d28acda82ce8ac53f835142f46da2

diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 27e008b..e4e8b03 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -288,6 +288,30 @@ endef
 
 endif # SYSTEM_GLEW
 
+$(eval $(call gb_Helper_register_packages_for_install,ooo,\
+	liborcus \
+))
+
+ifneq ($(SYSTEM_GLEW),)
+
+else # !SYSTEM_GLYPHY
+
+define gb_LinkTarget__use_glyphy
+$(call gb_LinkTarget_use_package,$(1),glyphy)
+
+$(call gb_LinkTarget_set_include,$(1),\
+	-I$(call gb_UnpackedTarball_get_dir,glyphy/include) \
+	$$(INCLUDE) \
+)
+
+$(call gb_LinkTarget_add_libs,$(1),\
+	-L$(call gb_UnpackedTarball_get_dir,glyphy)/src/.libs -lglyphy \
+)
+
+endef
+
+endif GLYPHY
+
 define gb_LinkTarget__use_iconv
 $(call gb_LinkTarget_add_libs,$(1),-liconv)
 
diff --git a/external/glyphy/ExternalPackage_glyphy.mk b/external/glyphy/ExternalPackage_glyphy.mk
index 484590d..cbae840 100644
--- a/external/glyphy/ExternalPackage_glyphy.mk
+++ b/external/glyphy/ExternalPackage_glyphy.mk
@@ -11,4 +11,10 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,glyphy,glyphy))
 
 $(eval $(call gb_ExternalPackage_use_external_project,glyphy,glyphy))
 
+ifeq ($(OS),MACOSX)
+$(eval $(call gb_ExternalPackage_add_file,glyphy,$(LIBO_LIB_FOLDER)/libglyphy.dylib,src/.libs/libglyphy.dylib))
+else ifeq ($(DISABLE_DYNLOADING),)
+$(eval $(call gb_ExternalPackage_add_file,glyphy,$(LIBO_LIB_FOLDER)/libglyphy.so.0,src/.libs/libglyphy.so.0.0.0))
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index a59c49b..8748d1e 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -738,6 +738,10 @@ $(eval $(call gb_Library_add_libs,vcl,\
 	-lXext \
 ))
 
+$(eval $(call gb_Library_use_externals,vcl,\
+	glyphy \
+))
+
 $(eval $(call gb_Library_add_exception_objects,vcl,\
 	vcl/opengl/x11/X11DeviceInfo \
 ))
commit 263f238463716ee8938e641afbf6c4f283a84145
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Tue Oct 13 00:11:13 2015 +0200

    integrate glyphy into the build
    
    The used glyphy is not directly the upstream version. We currently use a
    patched version that allows to disable the build for the demos.
    
    Change-Id: Ic03355e1ea8fbc56e57afa4f90a55741fe9a563a

diff --git a/Makefile.fetch b/Makefile.fetch
index 10317b3..8b2da4e 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -130,6 +130,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR)
 		$(call fetch_Optional,FREETYPE,FREETYPE_TARBALL) \
 		$(call fetch_Optional,GLEW,GLEW_TARBALL) \
 		$(call fetch_Optional,GLM,GLM_TARBALL) \
+		$(call fetch_Optional,GLYPHY,GLYPHY_TARBALL) \
 		$(call fetch_Optional_pack,GOOGLE_DOCS_EXTENSION_PACK) \
 		$(call fetch_Optional,GRAPHITE,GRAPHITE_TARBALL) \
 		$(call fetch_Optional,HARFBUZZ,HARFBUZZ_TARBALL) \
diff --git a/configure.ac b/configure.ac
index 2f064eb..50e9dde 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8811,6 +8811,11 @@ AS_IF([test "$with_system_glew" = "yes"],
     [AC_DEFINE([HAVE_GLEW_1_12])])
 
 dnl ===================================================================
+dnl Check for system glyphy
+dnl ===================================================================
+libo_CHECK_SYSTEM_MODULE([glyphy], [GLYPHY], [glyphy >= 0.12.0], ["-I${WORKDIR}/UnpackedTarball/glyphy/include"])
+
+dnl ===================================================================
 dnl Check for system vigra
 dnl ===================================================================
 AC_MSG_CHECKING([which vigra to use])
diff --git a/download.lst b/download.lst
index 81a2354..4f0bfb0 100755
--- a/download.lst
+++ b/download.lst
@@ -52,6 +52,7 @@ export FREEHAND_TARBALL := libfreehand-0.1.1.tar.bz2
 export FREETYPE_TARBALL := dbf2caca1d3afd410a29217a9809d397-freetype-2.4.8.tar.bz2
 export GLEW_TARBALL := 3941e9cab2f4f9d8faee3e8d57ae7664-glew-1.12.0.zip
 export GLM_TARBALL := bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.zip
+export GLYPHY_TARBALL := 5d303fb955beb9bf112267316ca9d021-glyphy-0.2.0.tar.bz2
 export GRAPHITE_TARBALL := 5c0c9ac0996fbb4a0e17780ff5441959-graphite2-minimal-1.3.4.tgz
 export HARFBUZZ_MD5SUM := 0e27e531f4c4acff601ebff0957755c2
 export HARFBUZZ_TARBALL := harfbuzz-0.9.40.tar.bz2
diff --git a/external/glyphy/ExternalPackage_glyphy.mk b/external/glyphy/ExternalPackage_glyphy.mk
new file mode 100644
index 0000000..484590d
--- /dev/null
+++ b/external/glyphy/ExternalPackage_glyphy.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,glyphy,glyphy))
+
+$(eval $(call gb_ExternalPackage_use_external_project,glyphy,glyphy))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/glyphy/ExternalProject_glyphy.mk b/external/glyphy/ExternalProject_glyphy.mk
new file mode 100644
index 0000000..1eda015
--- /dev/null
+++ b/external/glyphy/ExternalProject_glyphy.mk
@@ -0,0 +1,38 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalProject_ExternalProject,glyphy))
+
+$(eval $(call gb_ExternalProject_use_autoconf,glyphy,build))
+
+$(eval $(call gb_ExternalProject_register_targets,glyphy,\
+	build \
+))
+
+$(eval $(call gb_ExternalProject_use_externals,glyphy, \
+    glew \
+))
+
+$(call gb_ExternalProject_get_state_target,glyphy,build) :
+	$(call gb_ExternalProject_run,build,\
+		MAKE=$(MAKE) ./configure \
+			--with-pic \
+			$(if $(DISABLE_DYNLOADING), \
+				--enable-static --disable-shared \
+			, \
+				--enable-shared --disable-static \
+			) \
+			$(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+			$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+		&& $(if $(verbose),V=1) \
+		   $(MAKE) \
+	)
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/glyphy/Makefile b/external/glyphy/Makefile
new file mode 100644
index 0000000..e4968cf
--- /dev/null
+++ b/external/glyphy/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/glyphy/Module_glyphy.mk b/external/glyphy/Module_glyphy.mk
new file mode 100644
index 0000000..084c542
--- /dev/null
+++ b/external/glyphy/Module_glyphy.mk
@@ -0,0 +1,21 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Module_Module,glyphy))
+
+$(eval $(call gb_Module_add_targets,liborcus,\
+	UnpackedTarball_glyphy \
+))
+
+$(eval $(call gb_Module_add_targets,glyphy,\
+	ExternalPackage_glyphy \
+	ExternalProject_glyphy \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/glyphy/UnpackedTarball_glyphy.mk b/external/glyphy/UnpackedTarball_glyphy.mk
new file mode 100644
index 0000000..8e2244b
--- /dev/null
+++ b/external/glyphy/UnpackedTarball_glyphy.mk
@@ -0,0 +1,16 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,glyphy))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,glyphy,$(GLYPHY_TARBALL)))
+
+$(eval $(call gb_UnpackedTarball_set_patchlevel,glyphy,1))
+
+# vim: set noet sw=4 ts=4:
commit 41d90d6c7c41df781ecaf7745872f20abd7e52a9
Author: László Németh <laszlo.nemeth at collabora.com>
Date:   Tue Nov 10 01:00:51 2015 +0100

    tdf#92648 unit test for DOCX import regression (textbox shrinking)
    
    Change-Id: I810708bbd337b325ed58927fcdd67f24f70f1252

diff --git a/sw/qa/extras/uiwriter/data/tdf92648.docx b/sw/qa/extras/uiwriter/data/tdf92648.docx
new file mode 100644
index 0000000..4857723
Binary files /dev/null and b/sw/qa/extras/uiwriter/data/tdf92648.docx differ
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 8924f28..f0b495d 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -167,6 +167,7 @@ public:
     void testTdf88986();
     void testTdf87922();
     void testTdf77014();
+    void testTdf92648();
 
     CPPUNIT_TEST_SUITE(SwUiWriterTest);
     CPPUNIT_TEST(testReplaceForward);
@@ -243,6 +244,7 @@ public:
     CPPUNIT_TEST(testTdf88986);
     CPPUNIT_TEST(testTdf87922);
     CPPUNIT_TEST(testTdf77014);
+    CPPUNIT_TEST(testTdf92648);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -2743,6 +2745,21 @@ void SwUiWriterTest::testTdf77014()
     CPPUNIT_ASSERT_EQUAL(OUString("1"),       parseDump("/root/page/body/txt[5]/Text[5]", "nLength"));
 }
 
+void SwUiWriterTest::testTdf92648()
+{
+    SwDoc* pDoc = createDoc("tdf92648.docx");
+    SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0);
+    std::set<const SwFrameFormat*> aTextBoxes = SwTextBoxHelper::findTextBoxes(pDoc);
+    // Make sure we have ten draw shapes.
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(10), SwTextBoxHelper::getCount(pPage, aTextBoxes));
+    // and the text boxes haven't got zero height
+    for (std::set<const SwFrameFormat*>::iterator it=aTextBoxes.begin(); it!=aTextBoxes.end(); ++it)
+    {
+        SwFormatFrmSize aSize((*it)->GetFrmSize());
+        CPPUNIT_ASSERT(aSize.GetHeight() != 0);
+    }
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest);
 CPPUNIT_PLUGIN_IMPLEMENT();
 
commit 6540c288372c3cbb94a30daa5a40e97690cb0ea5
Author: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Date:   Mon Nov 9 15:58:53 2015 +0100

    Remove misleading 'make build' line from gbuild help
    
    Change-Id: If389e2dc6f5af07662e6ab8aa94e0e9ce8e30f5b
    Reviewed-on: https://gerrit.libreoffice.org/19865
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/solenv/gbuild/gbuild.help.txt b/solenv/gbuild/gbuild.help.txt
index 9364994..35b97c7 100644
--- a/solenv/gbuild/gbuild.help.txt
+++ b/solenv/gbuild/gbuild.help.txt
@@ -28,7 +28,6 @@ IMPORTANT OPTIONS
 
 AVAILABLE TARGETS
        all              build product and run unit tests (default goal)
-       build            build product
        unitcheck        run unit tests
        slowcheck        run slow unit tests
        subsequentcheck  run system tests (requires full installation)
@@ -43,6 +42,7 @@ AVAILABLE TARGETS
                         NOTE: needs graphviz to work
        showmodules      shows all registered modules
        <module>         build the named module
+       <module>.build   build the named module without running unittests
        <module>.check   run unittests of the named module
        <module>.clean   clean the named module
        <module>.all     build the named module and the pre-requisite modules for it
commit 453cf8a4c44b7935c3029524bfd40fa9c1d87753
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Mon Nov 9 23:13:00 2015 +0100

    yet another member of SwXTextPortion needs to be guarded in the dtor
    
    Change-Id: Ia1e3febd6a2f0c18c686a04ef5b98ee1ad2d8b88

diff --git a/sw/source/core/unocore/unoport.cxx b/sw/source/core/unocore/unoport.cxx
index f3f8039..732dcc9 100644
--- a/sw/source/core/unocore/unoport.cxx
+++ b/sw/source/core/unocore/unoport.cxx
@@ -140,6 +140,11 @@ SwXTextPortion::~SwXTextPortion()
 {
     SolarMutexGuard aGuard;
     m_pUnoCursor.reset(nullptr);
+    if(m_FrameDepend.GetRegisteredIn())
+    {
+        auto pFrameDepend(const_cast<SwDepend*>(&m_FrameDepend));
+        pFrameDepend->GetRegisteredIn()->Remove(pFrameDepend);
+    }
 }
 
 uno::Reference< text::XText >  SwXTextPortion::getText()
commit 003ba90531b6ee5c3b3225298a1490ed9a7048a4
Author: Michael Stahl <mstahl at redhat.com>
Date:   Mon Nov 9 20:55:59 2015 +0100

    sc: replace boost::ptr_map with std::map<std::unique_ptr>
    
    Change-Id: I0cc3addefa436050259785ccf2ce540a84e9fcae

diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx
index 62d128b..ad11e91 100644
--- a/sc/source/filter/xml/xmlimprt.cxx
+++ b/sc/source/filter/xml/xmlimprt.cxx
@@ -19,7 +19,6 @@
 
 #include <sal/config.h>
 
-#include <o3tl/ptr_container.hxx>
 #include <svl/zforlist.hxx>
 #include <sal/macros.h>
 
@@ -2398,12 +2397,13 @@ bool ScXMLImport::GetValidation(const OUString& sName, ScMyImportValidation& aVa
 void ScXMLImport::AddNamedExpression(SCTAB nTab, ScMyNamedExpression* pNamedExp)
 {
     ::std::unique_ptr<ScMyNamedExpression> p(pNamedExp);
-    SheetNamedExpMap::iterator itr = maSheetNamedExpressions.find(nTab);
-    if (itr == maSheetNamedExpressions.end())
+    SheetNamedExpMap::iterator itr = m_SheetNamedExpressions.find(nTab);
+    if (itr == m_SheetNamedExpressions.end())
     {
         // No chain exists for this sheet.  Create one.
         ::std::unique_ptr<ScMyNamedExpressions> pNew(new ScMyNamedExpressions);
-        ::std::pair<SheetNamedExpMap::iterator, bool> r = o3tl::ptr_container::insert(maSheetNamedExpressions, nTab, std::move(pNew));
+        ::std::pair<SheetNamedExpMap::iterator, bool> r =
+            m_SheetNamedExpressions.insert(std::make_pair(nTab, std::move(pNew)));
         if (!r.second)
             // insertion failed.
             return;
@@ -3157,15 +3157,14 @@ void ScXMLImport::SetSheetNamedRanges()
     if (!pDoc)
         return;
 
-    SheetNamedExpMap::const_iterator itr = maSheetNamedExpressions.begin(), itrEnd = maSheetNamedExpressions.end();
-    for (; itr != itrEnd; ++itr)
+    for (auto const& itr : m_SheetNamedExpressions)
     {
-        SCTAB nTab = itr->first;
+        const SCTAB nTab = itr.first;
         ScRangeName* pRangeNames = pDoc->GetRangeName(nTab);
         if (!pRangeNames)
             continue;
 
-        const ScMyNamedExpressions& rNames = *itr->second;
+        const ScMyNamedExpressions& rNames = *itr.second;
         ::std::for_each(rNames.begin(), rNames.end(), RangeNameInserter(pDoc, *pRangeNames, *this));
     }
 }
diff --git a/sc/source/filter/xml/xmlimprt.hxx b/sc/source/filter/xml/xmlimprt.hxx
index 4b562b8..b87e82a 100644
--- a/sc/source/filter/xml/xmlimprt.hxx
+++ b/sc/source/filter/xml/xmlimprt.hxx
@@ -42,12 +42,13 @@
 #include <com/sun/star/util/XNumberFormatTypes.hpp>
 #include <com/sun/star/sheet/XSheetCellRangeContainer.hpp>
 
+#include <boost/noncopyable.hpp>
+
 #include <memory>
 #include <unordered_map>
+#include <map>
 #include <vector>
 #include <list>
-#include <boost/ptr_container/ptr_map.hpp>
-#include <boost/noncopyable.hpp>
 
 class ScMyStyleNumberFormats;
 class XMLNumberFormatAttributesExportHelper;
@@ -823,7 +824,7 @@ class ScXMLEditAttributeMap;
 class ScXMLImport: public SvXMLImport, boost::noncopyable
 {
     typedef std::unordered_map< OUString, sal_Int16, OUStringHash >   CellTypeMap;
-    typedef ::boost::ptr_map<SCTAB, ScMyNamedExpressions> SheetNamedExpMap;
+    typedef ::std::map<SCTAB, std::unique_ptr<ScMyNamedExpressions>> SheetNamedExpMap;
 
     CellTypeMap             aCellTypeMap;
 
@@ -939,7 +940,7 @@ class ScXMLImport: public SvXMLImport, boost::noncopyable
     ScMyTables              aTables;
 
     ScMyNamedExpressions*   m_pMyNamedExpressions;
-    SheetNamedExpMap maSheetNamedExpressions;
+    SheetNamedExpMap m_SheetNamedExpressions;
 
     ScMyLabelRanges*        pMyLabelRanges;
     ScMyImportValidations*  pValidations;
commit e61465d25f5e52bf439db65ed7a641722637034a
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Mon Nov 9 20:46:38 2015 +0100

    another missing SolarMutex in Writer UNO
    
    Change-Id: Ia9451b3f6180f97fda6ff16c65b5fbfcd17b75ec

diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx
index 3500551..28eb646 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -1260,8 +1260,11 @@ SwXFrame::SwXFrame(SwFrameFormat& rFrameFormat, FlyCntType eSet, const ::SfxItem
 
 SwXFrame::~SwXFrame()
 {
+    SolarMutexGuard aGuard;
     delete m_pCopySource;
     delete pProps;
+    if(GetRegisteredIn())
+        GetRegisteredIn()->Remove(this);
 }
 
 template<class Interface, class NameLookupIsHard>
commit c20930bfec4ce4953ffdaff1971216290fab0e4d
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Mon Nov 9 19:55:13 2015 +0100

    also fix SwXFlatParagraphIterator
    
    Change-Id: Ib35759c4d9e6ebc8e211d57d53d923f15ac9845a

diff --git a/sw/source/core/unocore/unoflatpara.cxx b/sw/source/core/unocore/unoflatpara.cxx
index 4628abc..62f77d8 100644
--- a/sw/source/core/unocore/unoflatpara.cxx
+++ b/sw/source/core/unocore/unoflatpara.cxx
@@ -361,6 +361,9 @@ SwXFlatParagraphIterator::SwXFlatParagraphIterator( SwDoc& rDoc, sal_Int32 nType
 
 SwXFlatParagraphIterator::~SwXFlatParagraphIterator()
 {
+    SolarMutexGuard aGuard;
+    if(GetRegisteredIn())
+        GetRegisteredIn()->Remove(this);
 }
 
 void SwXFlatParagraphIterator::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
commit df7f3c6733c1b4e4470554497f2c2aa96a442c30
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Nov 9 19:42:57 2015 +0100

    loplugin:redundantcast
    
    Change-Id: I8bfdb2c88b82dc9f1335d92589838cda4b1e7cf7

diff --git a/sc/source/ui/view/prevloc.cxx b/sc/source/ui/view/prevloc.cxx
index 8dd0621..b0e407c 100644
--- a/sc/source/ui/view/prevloc.cxx
+++ b/sc/source/ui/view/prevloc.cxx
@@ -273,7 +273,7 @@ static ScPreviewLocationEntry* lcl_GetEntryByAddress(
     for (auto const& it : rEntries)
     {
         if ( it->eType == eType && it->aCellRange.In( rPos ) )
-            return const_cast<ScPreviewLocationEntry*>(it.get());
+            return it.get();
     }
 
     return NULL;
commit d9b03172af1b81c0aede3e7e94e83d8932f26150
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Nov 9 18:44:05 2015 +0100

    Clean up Sequence construction
    
    ...to avoid silly errors like the one fixed with
    37039fde1187c2e71bdde6e7fafd23c6ae8a871e "Missing comma."
    
    Change-Id: Iab4d25f44fd8867ee1ef5e15c209ada5c6ebb0c8
    Reviewed-on: https://gerrit.libreoffice.org/19871
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx
index 1aeac9a..9f01e34 100644
--- a/oox/source/core/xmlfilterbase.cxx
+++ b/oox/source/core/xmlfilterbase.cxx
@@ -94,72 +94,50 @@ struct NamespaceIds: public rtl::StaticWithInit<
 {
     Sequence< beans::Pair< OUString, sal_Int32 > > operator()()
     {
-        static const char* const namespaceURIs[] = {
-            "http://www.w3.org/XML/1998/namespace",
-            "http://schemas.openxmlformats.org/package/2006/relationships",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
-            "http://purl.oclc.org/ooxml/officeDocument/relationships",
-            "http://schemas.openxmlformats.org/drawingml/2006/main",
-            "http://purl.oclc.org/ooxml/drawingml/main",
-            "http://schemas.openxmlformats.org/drawingml/2006/diagram",
-            "http://purl.oclc.org/ooxml/drawingml/diagram",
-            "http://schemas.openxmlformats.org/drawingml/2006/chart",
-            "http://schemas.openxmlformats.org/drawingml/2006/chartDrawing",
-            "urn:schemas-microsoft-com:vml",
-            "urn:schemas-microsoft-com:office:office",
-            "urn:schemas-microsoft-com:office:word",
-            "urn:schemas-microsoft-com:office:excel",
-            "urn:schemas-microsoft-com:office:powerpoint",
-            "http://schemas.microsoft.com/office/2006/activeX",
-            "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
-            "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
-            "http://schemas.microsoft.com/office/excel/2006/main",
-            "http://schemas.openxmlformats.org/presentationml/2006/main",
-            "http://schemas.openxmlformats.org/markup-compatibility/2006",
-            "http://schemas.openxmlformats.org/spreadsheetml/2006/main/v2",
-            "http://schemas.microsoft.com/office/drawing/2008/diagram",
-            "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main",
-            "http://schemas.libreoffice.org/",
-            "http://schemas.microsoft.com/office/powerpoint/2010/main",
-            "http://schemas.microsoft.com/office/powerpoint/2012/main"
-        };
-
-        static const sal_Int32 namespaceIds[] = {
-            NMSP_xml,
-            NMSP_packageRel,
-            NMSP_officeRel,
-            NMSP_officeRel,
-            NMSP_dml,
-            NMSP_dml,
-            NMSP_dmlDiagram,
-            NMSP_dmlDiagram,
-            NMSP_dmlChart,
-            NMSP_dmlChartDr,
-            NMSP_vml,
-            NMSP_vmlOffice,
-            NMSP_vmlWord,
-            NMSP_vmlExcel,
-            NMSP_vmlPowerpoint,
-            NMSP_ax,
-            NMSP_xls,
-            NMSP_xm,
-            NMSP_dmlSpreadDr,
-            NMSP_ppt,
-            NMSP_mce,
-            NMSP_mceTest,
-            NMSP_dsp,
-            NMSP_xls14Lst,
-            NMSP_loext,
-            NMSP_p14,
-            NMSP_p15,
-        };
-
-        Sequence< beans::Pair< OUString, sal_Int32 > > aRet(SAL_N_ELEMENTS(namespaceIds));
-        for( sal_Int32 i=0; i<aRet.getLength(); ++i )
-            aRet[i] = make_Pair(
-                OUString::createFromAscii(namespaceURIs[i]),
-                namespaceIds[i]);
-        return aRet;
+        return css::uno::Sequence<css::beans::Pair<OUString, sal_Int32>>{
+            {"http://www.w3.org/XML/1998/namespace", NMSP_xml},
+            {"http://schemas.openxmlformats.org/package/2006/relationships",
+             NMSP_packageRel},
+            {"http://schemas.openxmlformats.org/officeDocument/2006/relationships",
+             NMSP_officeRel},
+            {"http://purl.oclc.org/ooxml/officeDocument/relationships",
+             NMSP_officeRel},
+            {"http://schemas.openxmlformats.org/drawingml/2006/main", NMSP_dml},
+            {"http://purl.oclc.org/ooxml/drawingml/main", NMSP_dml},
+            {"http://schemas.openxmlformats.org/drawingml/2006/diagram",
+             NMSP_dmlDiagram},
+            {"http://purl.oclc.org/ooxml/drawingml/diagram", NMSP_dmlDiagram},
+            {"http://schemas.openxmlformats.org/drawingml/2006/chart",
+             NMSP_dmlChart},
+            {"http://schemas.openxmlformats.org/drawingml/2006/chartDrawing",
+             NMSP_dmlChartDr},
+            {"urn:schemas-microsoft-com:vml", NMSP_vml},
+            {"urn:schemas-microsoft-com:office:office", NMSP_vmlOffice},
+            {"urn:schemas-microsoft-com:office:word", NMSP_vmlWord},
+            {"urn:schemas-microsoft-com:office:excel", NMSP_vmlExcel},
+            {"urn:schemas-microsoft-com:office:powerpoint", NMSP_vmlPowerpoint},
+            {"http://schemas.microsoft.com/office/2006/activeX", NMSP_ax},
+            {"http://schemas.openxmlformats.org/spreadsheetml/2006/main",
+             NMSP_xls},
+            {"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
+             NMSP_xm},
+            {"http://schemas.microsoft.com/office/excel/2006/main",
+             NMSP_dmlSpreadDr},
+            {"http://schemas.openxmlformats.org/presentationml/2006/main",
+             NMSP_ppt},
+            {"http://schemas.openxmlformats.org/markup-compatibility/2006",
+             NMSP_mce},
+            {"http://schemas.openxmlformats.org/spreadsheetml/2006/main/v2",
+             NMSP_mceTest},
+            {"http://schemas.microsoft.com/office/drawing/2008/diagram",
+             NMSP_dsp},
+            {"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main",
+             NMSP_xls14Lst},
+            {"http://schemas.libreoffice.org/", NMSP_loext},
+            {"http://schemas.microsoft.com/office/powerpoint/2010/main",
+             NMSP_p14},
+            {"http://schemas.microsoft.com/office/powerpoint/2012/main",
+             NMSP_p15}};
     }
 };
 
commit ffdc5db260b7c17c47109f707b3664a3f3caafaa
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Mon Nov 9 18:56:17 2015 +0100

    fix a set of race conditions in the writer uno wrappers
    
    - whenever SwClients are added or removed, the SolarMutex should be
      locked
    - locking the mutex there would be a performance killer
    - thus only DBG_TESTSOLARMUTEX() and fixing the fallout on DBG_UTL
      builds
    
    Change-Id: I3b10b9a01c40fbe68d15ce6e9c5c74db34eb1eb6
    Reviewed-on: https://gerrit.libreoffice.org/19856

diff --git a/sw/source/core/access/accpara.cxx b/sw/source/core/access/accpara.cxx
index dce86d8..5ab1d0d 100644
--- a/sw/source/core/access/accpara.cxx
+++ b/sw/source/core/access/accpara.cxx
@@ -564,6 +564,8 @@ SwAccessibleParagraph::~SwAccessibleParagraph()
     delete pPortionData;
     delete pHyperTextData;
     delete mpParaChangeTrackInfo; // #i108125#
+    if(GetRegisteredIn())
+        GetRegisteredIn()->Remove(this);
 }
 
 bool SwAccessibleParagraph::HasCursor()
diff --git a/sw/source/core/attr/calbck.cxx b/sw/source/core/attr/calbck.cxx
index fafb9a6..0ba6a74 100644
--- a/sw/source/core/attr/calbck.cxx
+++ b/sw/source/core/attr/calbck.cxx
@@ -22,6 +22,7 @@
 #include <hints.hxx>
 #include <swcache.hxx>
 #include <swfntcch.hxx>
+#include <tools/debug.hxx>
 
 sw::LegacyModifyHint::~LegacyModifyHint() {}
 
@@ -29,6 +30,8 @@ TYPEINIT0( SwClient );
 
 SwClient::~SwClient()
 {
+    if(GetRegisteredIn())
+        DBG_TESTSOLARMUTEX();
     OSL_ENSURE( !pRegisteredIn || pRegisteredIn->HasWriterListeners(), "SwModify still known, but Client already disconnected!" );
     if( pRegisteredIn && pRegisteredIn->HasWriterListeners() )
         pRegisteredIn->Remove( this );
@@ -36,6 +39,7 @@ SwClient::~SwClient()
 
 void SwClient::CheckRegistration( const SfxPoolItem* pOld, const SfxPoolItem* )
 {
+    DBG_TESTSOLARMUTEX();
     // this method only handles notification about dying SwModify objects
     if( (!pOld || pOld->Which() != RES_OBJECTDYING) )
         return;
@@ -73,6 +77,7 @@ void SwClient::Modify(SfxPoolItem const*const pOldValue, SfxPoolItem const*const
 
 SwModify::~SwModify()
 {
+    DBG_TESTSOLARMUTEX();
     OSL_ENSURE( !IsModifyLocked(), "Modify destroyed but locked." );
 
     if ( IsInCache() )
@@ -109,6 +114,7 @@ SwModify::~SwModify()
 
 void SwModify::NotifyClients( const SfxPoolItem* pOldValue, const SfxPoolItem* pNewValue )
 {
+    DBG_TESTSOLARMUTEX();
     if ( IsInCache() || IsInSwFntCache() )
     {
         const sal_uInt16 nWhich = pOldValue ? pOldValue->Which() :
@@ -158,6 +164,7 @@ bool SwModify::GetInfo( SfxPoolItem& rInfo ) const
 
 void SwModify::Add( SwClient* pDepend )
 {
+    DBG_TESTSOLARMUTEX();
     OSL_ENSURE( !m_bLockClientList, "Client inserted while in Modify" );
 
     if(pDepend->pRegisteredIn != this )
@@ -202,6 +209,7 @@ SwClient* SwModify::Remove( SwClient* pDepend )
     if(m_bInDocDTOR)
         return nullptr;
 
+    DBG_TESTSOLARMUTEX();
     assert(pDepend->pRegisteredIn == this);
 
     // SwClient is my listener
diff --git a/sw/source/core/unocore/unodraw.cxx b/sw/source/core/unocore/unodraw.cxx
index 1062514..fb99025e 100644
--- a/sw/source/core/unocore/unodraw.cxx
+++ b/sw/source/core/unocore/unodraw.cxx
@@ -1006,12 +1006,15 @@ void SwXShape::AddExistingShapeToFormat( SdrObject& _rObj )
 
 SwXShape::~SwXShape()
 {
+    SolarMutexGuard aGuard;
     if (xShapeAgg.is())
     {
         uno::Reference< uno::XInterface >  xRef;
         xShapeAgg->setDelegator(xRef);
     }
     delete pImpl;
+    if(GetRegisteredIn())
+        GetRegisteredIn()->Remove(this);
 }
 
 uno::Any SwXShape::queryInterface( const uno::Type& aType ) throw( uno::RuntimeException, std::exception )
diff --git a/sw/source/core/unocore/unoport.cxx b/sw/source/core/unocore/unoport.cxx
index 480e76a..f3f8039 100644
--- a/sw/source/core/unocore/unoport.cxx
+++ b/sw/source/core/unocore/unoport.cxx
@@ -137,7 +137,10 @@ SwXTextPortion::SwXTextPortion(
 }
 
 SwXTextPortion::~SwXTextPortion()
-{ }
+{
+    SolarMutexGuard aGuard;
+    m_pUnoCursor.reset(nullptr);
+}
 
 uno::Reference< text::XText >  SwXTextPortion::getText()
 throw( uno::RuntimeException, std::exception )
diff --git a/sw/source/core/unocore/unoportenum.cxx b/sw/source/core/unocore/unoportenum.cxx
index c9c4e6e..7af952a 100644
--- a/sw/source/core/unocore/unoportenum.cxx
+++ b/sw/source/core/unocore/unoportenum.cxx
@@ -384,7 +384,10 @@ SwXTextPortionEnumeration::SwXTextPortionEnumeration(
 }
 
 SwXTextPortionEnumeration::~SwXTextPortionEnumeration()
-{ }
+{
+    SolarMutexGuard aGuard;
+    m_pUnoCrsr.reset(nullptr);
+}
 
 sal_Bool SwXTextPortionEnumeration::hasMoreElements()
 throw( uno::RuntimeException, std::exception )
diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx
index 7e4295e..6ec34a4 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -2099,6 +2099,7 @@ void SwXNumberingRules::setPropertyValue( const OUString& rPropertyName, const A
     throw(UnknownPropertyException, PropertyVetoException,
         IllegalArgumentException, WrappedTargetException, RuntimeException, std::exception)
 {
+    SolarMutexGuard aGuard;
     SwNumRule* pDocRule = 0;
     SwNumRule* pCreatedRule = 0;
     if(!pNumRule)
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index dfb10e0..f615d0d 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -1304,6 +1304,8 @@ SwXStyle::~SwXStyle()
     if(m_pBasePool)
         EndListening(*m_pBasePool);
     delete m_pPropertiesImpl;
+    if(GetRegisteredIn())
+        GetRegisteredIn()->Remove( this );
 }
 
 void SwXStyle::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew)
diff --git a/sw/source/core/unocore/unotbl.cxx b/sw/source/core/unocore/unotbl.cxx
index 7eb2ed7..ea8983c 100644
--- a/sw/source/core/unocore/unotbl.cxx
+++ b/sw/source/core/unocore/unotbl.cxx
@@ -1242,7 +1242,11 @@ SwXTextTableRow::SwXTextTableRow(SwFrameFormat* pFormat, SwTableLine* pLn) :
 { }
 
 SwXTextTableRow::~SwXTextTableRow()
-{ }
+{
+    SolarMutexGuard aGuard;
+    if(GetRegisteredIn())
+        GetRegisteredIn()->Remove(this);
+}
 
 uno::Reference< beans::XPropertySetInfo > SwXTextTableRow::getPropertySetInfo() throw( uno::RuntimeException, std::exception )
 {
@@ -1960,7 +1964,12 @@ SwXTextTable::SwXTextTable(SwFrameFormat& rFrameFormat)
 { }
 
 SwXTextTable::~SwXTextTable()
-    { delete pTableProps; }
+{
+    SolarMutexGuard aGuard;
+    delete pTableProps;
+    if(GetRegisteredIn())
+        GetRegisteredIn()->Remove(this);
+}
 
 uno::Reference<text::XTextTable> SwXTextTable::CreateXTextTable(SwFrameFormat* const pFrameFormat)
 {
commit 37039fde1187c2e71bdde6e7fafd23c6ae8a871e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Nov 9 18:21:14 2015 +0100

    Missing comma
    
    Change-Id: Ia2497902771b78130b6263885bdb3362d1e6c76c

diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx
index fca049c..1aeac9a 100644
--- a/oox/source/core/xmlfilterbase.cxx
+++ b/oox/source/core/xmlfilterbase.cxx
@@ -120,7 +120,7 @@ struct NamespaceIds: public rtl::StaticWithInit<
             "http://schemas.microsoft.com/office/drawing/2008/diagram",
             "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main",
             "http://schemas.libreoffice.org/",
-            "http://schemas.microsoft.com/office/powerpoint/2010/main"
+            "http://schemas.microsoft.com/office/powerpoint/2010/main",
             "http://schemas.microsoft.com/office/powerpoint/2012/main"
         };
 
commit 1056f627efb0625ab658f4219a6a3c7002e2022f
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Nov 9 18:12:43 2015 +0100

    loplugin:passstuffbyref
    
    Change-Id: Ibcab688c042e32a81b936573503c4a9066244161

diff --git a/include/oox/ppt/slidetransition.hxx b/include/oox/ppt/slidetransition.hxx
index 4680320..1e322e0 100644
--- a/include/oox/ppt/slidetransition.hxx
+++ b/include/oox/ppt/slidetransition.hxx
@@ -54,7 +54,7 @@ namespace oox { namespace ppt {
         void setOoxTransitionType( ::sal_Int32 OoxType,
                                                              ::sal_Int32 param1, ::sal_Int32 param2 );
 
-        void setPresetTransition(OUString sPresetTransition);
+        void setPresetTransition(OUString const & sPresetTransition);
 
     private:
         ::sal_Int16 mnTransitionType;
diff --git a/oox/source/ppt/slidetransition.cxx b/oox/source/ppt/slidetransition.cxx
index 6681447..0fe0b10 100644
--- a/oox/source/ppt/slidetransition.cxx
+++ b/oox/source/ppt/slidetransition.cxx
@@ -419,7 +419,7 @@ namespace oox { namespace ppt {
         }
     }
 
-    void SlideTransition::setPresetTransition(OUString sPresetTransition)
+    void SlideTransition::setPresetTransition(OUString const & sPresetTransition)
     {
         if (sPresetTransition == "fallOver")
         {
commit 31801a402e048b4861cb373687f28ea15ca60ebb
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Nov 9 18:01:44 2015 +0100

    add [ar-{BH,IQ,JO,LY,MA,QA,SY,YE}] to locale data libs, tdf#95485
    
    Change-Id: Idbe31956d8627ff51f90d2e4a52666d33143b8c0

diff --git a/i18npool/Library_localedata_others.mk b/i18npool/Library_localedata_others.mk
index 5e79699..b485379 100644
--- a/i18npool/Library_localedata_others.mk
+++ b/i18npool/Library_localedata_others.mk
@@ -20,13 +20,21 @@ $(eval $(call gb_Library_add_generated_exception_objects,localedata_others,\
 	CustomTarget/i18npool/localedata/localedata_ak_GH \
 	CustomTarget/i18npool/localedata/localedata_am_ET \
 	CustomTarget/i18npool/localedata/localedata_ar_AE \
+	CustomTarget/i18npool/localedata/localedata_ar_BH \
 	CustomTarget/i18npool/localedata/localedata_ar_DZ \
 	CustomTarget/i18npool/localedata/localedata_ar_EG \
+	CustomTarget/i18npool/localedata/localedata_ar_IQ \
+	CustomTarget/i18npool/localedata/localedata_ar_JO \
 	CustomTarget/i18npool/localedata/localedata_ar_KW \
 	CustomTarget/i18npool/localedata/localedata_ar_LB \
+	CustomTarget/i18npool/localedata/localedata_ar_LY \
+	CustomTarget/i18npool/localedata/localedata_ar_MA \
 	CustomTarget/i18npool/localedata/localedata_ar_OM \
+	CustomTarget/i18npool/localedata/localedata_ar_QA \
 	CustomTarget/i18npool/localedata/localedata_ar_SA \
+	CustomTarget/i18npool/localedata/localedata_ar_SY \
 	CustomTarget/i18npool/localedata/localedata_ar_TN \
+	CustomTarget/i18npool/localedata/localedata_ar_YE \
 	CustomTarget/i18npool/localedata/localedata_axk_CG \
 	CustomTarget/i18npool/localedata/localedata_az_AZ \
 	CustomTarget/i18npool/localedata/localedata_beq_CG \
diff --git a/i18npool/source/localedata/localedata.cxx b/i18npool/source/localedata/localedata.cxx
index f0ceb8b..703406a 100644
--- a/i18npool/source/localedata/localedata.cxx
+++ b/i18npool/source/localedata/localedata.cxx
@@ -305,7 +305,14 @@ static const struct {
     { "lgr_SB", lcl_DATA_OTHERS },
     { "mos_BF", lcl_DATA_OTHERS },
     { "ny_MW",  lcl_DATA_OTHERS },
-    { "ti_ET",  lcl_DATA_OTHERS }
+    { "ar_BH",  lcl_DATA_OTHERS },
+    { "ar_IQ",  lcl_DATA_OTHERS },
+    { "ar_JO",  lcl_DATA_OTHERS },
+    { "ar_LY",  lcl_DATA_OTHERS },
+    { "ar_MA",  lcl_DATA_OTHERS },
+    { "ar_QA",  lcl_DATA_OTHERS },
+    { "ar_SY",  lcl_DATA_OTHERS },
+    { "ar_YE",  lcl_DATA_OTHERS }
 };
 
 #else
commit 7e997e2c1b5aaa9ad525e15e06fc8f0e8ed8fc25
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Nov 9 17:58:01 2015 +0100

    add U+200F RIGHT-TO-LEFT MARK to currency symbol, tdf#95485 follow-up
    
    ... same as in other ar_* locale data.
    
    Change-Id: If5bd17d710fc6a9b40aac87eb49a8615f59a7a31

diff --git a/i18npool/source/localedata/data/ar_BH.xml b/i18npool/source/localedata/data/ar_BH.xml
index 82cb61b..f2934f3 100644
--- a/i18npool/source/localedata/data/ar_BH.xml
+++ b/i18npool/source/localedata/data/ar_BH.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.ب.-3C01]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.ب.‏-3C01]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
@@ -28,7 +28,7 @@
   <LC_CURRENCY>
     <Currency default="true" usedInCompatibleFormatCodes="true">
       <CurrencyID>BHD</CurrencyID>
-      <CurrencySymbol>د.ب.</CurrencySymbol>
+      <CurrencySymbol>د.ب.‏</CurrencySymbol>
       <BankSymbol>BHD</BankSymbol>
       <CurrencyName>BHD</CurrencyName>
       <DecimalPlaces>2</DecimalPlaces>
diff --git a/i18npool/source/localedata/data/ar_IQ.xml b/i18npool/source/localedata/data/ar_IQ.xml
index 26c9074..f4b338e 100644
--- a/i18npool/source/localedata/data/ar_IQ.xml
+++ b/i18npool/source/localedata/data/ar_IQ.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.ع.-801]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.ع.‏-801]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
@@ -28,7 +28,7 @@
   <LC_CURRENCY>
     <Currency default="true" usedInCompatibleFormatCodes="true">
       <CurrencyID>IQD</CurrencyID>
-      <CurrencySymbol>د.ع.</CurrencySymbol>
+      <CurrencySymbol>د.ع.‏</CurrencySymbol>
       <BankSymbol>IQD</BankSymbol>
       <CurrencyName>IQD</CurrencyName>
       <DecimalPlaces>2</DecimalPlaces>
diff --git a/i18npool/source/localedata/data/ar_JO.xml b/i18npool/source/localedata/data/ar_JO.xml
index 5246ad9..422ed9c 100644
--- a/i18npool/source/localedata/data/ar_JO.xml
+++ b/i18npool/source/localedata/data/ar_JO.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.أ.-2C01]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.أ.‏-2C01]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
@@ -28,7 +28,7 @@
   <LC_CURRENCY>
     <Currency default="true" usedInCompatibleFormatCodes="true">
       <CurrencyID>JOD</CurrencyID>
-      <CurrencySymbol>د.أ.</CurrencySymbol>
+      <CurrencySymbol>د.أ.‏</CurrencySymbol>
       <BankSymbol>JOD</BankSymbol>
       <CurrencyName>JOD</CurrencyName>
       <DecimalPlaces>2</DecimalPlaces>
diff --git a/i18npool/source/localedata/data/ar_LY.xml b/i18npool/source/localedata/data/ar_LY.xml
index 71ba64d..ae50797 100644
--- a/i18npool/source/localedata/data/ar_LY.xml
+++ b/i18npool/source/localedata/data/ar_LY.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.ل.-1001]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.ل.‏-1001]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
@@ -28,7 +28,7 @@
   <LC_CURRENCY>
     <Currency default="true" usedInCompatibleFormatCodes="true">
       <CurrencyID>LYD</CurrencyID>
-      <CurrencySymbol>د.ل.</CurrencySymbol>
+      <CurrencySymbol>د.ل.‏</CurrencySymbol>
       <BankSymbol>LYD</BankSymbol>
       <CurrencyName>LYD</CurrencyName>
       <DecimalPlaces>2</DecimalPlaces>
diff --git a/i18npool/source/localedata/data/ar_MA.xml b/i18npool/source/localedata/data/ar_MA.xml
index ba8b244..c8995cb 100644
--- a/i18npool/source/localedata/data/ar_MA.xml
+++ b/i18npool/source/localedata/data/ar_MA.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.م.-1801]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.م.‏-1801]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
@@ -28,7 +28,7 @@
   <LC_CURRENCY>
     <Currency default="true" usedInCompatibleFormatCodes="true">
       <CurrencyID>MAD</CurrencyID>
-      <CurrencySymbol>د.م.</CurrencySymbol>
+      <CurrencySymbol>د.م.‏</CurrencySymbol>
       <BankSymbol>MAD</BankSymbol>
       <CurrencyName>MAD</CurrencyName>
       <DecimalPlaces>2</DecimalPlaces>
diff --git a/i18npool/source/localedata/data/ar_QA.xml b/i18npool/source/localedata/data/ar_QA.xml
index 0569743..b26ae38 100644
--- a/i18npool/source/localedata/data/ar_QA.xml
+++ b/i18npool/source/localedata/data/ar_QA.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$ر.ق.-4001]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$ر.ق.‏-4001]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
@@ -28,7 +28,7 @@
   <LC_CURRENCY>
     <Currency default="true" usedInCompatibleFormatCodes="true">
       <CurrencyID>QAR</CurrencyID>
-      <CurrencySymbol>ر.ق.</CurrencySymbol>
+      <CurrencySymbol>ر.ق.‏</CurrencySymbol>
       <BankSymbol>QAR</BankSymbol>
       <CurrencyName>QAR</CurrencyName>
       <DecimalPlaces>2</DecimalPlaces>
diff --git a/i18npool/source/localedata/data/ar_SY.xml b/i18npool/source/localedata/data/ar_SY.xml
index b002872..a1bb451 100644
--- a/i18npool/source/localedata/data/ar_SY.xml
+++ b/i18npool/source/localedata/data/ar_SY.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$ل.س.-2801]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$ل.س.‏-2801]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
@@ -28,7 +28,7 @@
   <LC_CURRENCY>
     <Currency default="true" usedInCompatibleFormatCodes="true">
       <CurrencyID>SYP</CurrencyID>
-      <CurrencySymbol>ل.س.</CurrencySymbol>
+      <CurrencySymbol>ل.س.‏</CurrencySymbol>
       <BankSymbol>SYP</BankSymbol>
       <CurrencyName>SYP</CurrencyName>
       <DecimalPlaces>2</DecimalPlaces>
diff --git a/i18npool/source/localedata/data/ar_YE.xml b/i18npool/source/localedata/data/ar_YE.xml
index 0479084..5a3cfb2 100644
--- a/i18npool/source/localedata/data/ar_YE.xml
+++ b/i18npool/source/localedata/data/ar_YE.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$ر.ي.-2401]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$ر.ي.‏-2401]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
@@ -28,7 +28,7 @@
   <LC_CURRENCY>
     <Currency default="true" usedInCompatibleFormatCodes="true">
       <CurrencyID>YER</CurrencyID>
-      <CurrencySymbol>ر.ي.</CurrencySymbol>
+      <CurrencySymbol>ر.ي.‏</CurrencySymbol>
       <BankSymbol>YER</BankSymbol>
       <CurrencyName>YER</CurrencyName>
       <DecimalPlaces>2</DecimalPlaces>
commit 6938d37f0eb00420e491f6312a75894ef40dcbf4
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Nov 9 17:50:40 2015 +0100

    correct order of currency symbol and LangID in replaceTo, tdf#95485 follow-up
    
    Change-Id: Iefb671f4e7130523edde1d0495d36fb57aa7528c

diff --git a/i18npool/source/localedata/data/ar_BH.xml b/i18npool/source/localedata/data/ar_BH.xml
index 35a55d8..82cb61b 100644
--- a/i18npool/source/localedata/data/ar_BH.xml
+++ b/i18npool/source/localedata/data/ar_BH.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$3C01-د.ب.]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.ب.-3C01]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
diff --git a/i18npool/source/localedata/data/ar_IQ.xml b/i18npool/source/localedata/data/ar_IQ.xml
index 4001437..26c9074 100644
--- a/i18npool/source/localedata/data/ar_IQ.xml
+++ b/i18npool/source/localedata/data/ar_IQ.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$801-د.ع.]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.ع.-801]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
diff --git a/i18npool/source/localedata/data/ar_JO.xml b/i18npool/source/localedata/data/ar_JO.xml
index d6c4d1b..5246ad9 100644
--- a/i18npool/source/localedata/data/ar_JO.xml
+++ b/i18npool/source/localedata/data/ar_JO.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$2C01-د.أ.]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.أ.-2C01]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
diff --git a/i18npool/source/localedata/data/ar_LY.xml b/i18npool/source/localedata/data/ar_LY.xml
index 14e8bea..71ba64d 100644
--- a/i18npool/source/localedata/data/ar_LY.xml
+++ b/i18npool/source/localedata/data/ar_LY.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$1001-د.ل.]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.ل.-1001]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
diff --git a/i18npool/source/localedata/data/ar_MA.xml b/i18npool/source/localedata/data/ar_MA.xml
index f52a3bc..ba8b244 100644
--- a/i18npool/source/localedata/data/ar_MA.xml
+++ b/i18npool/source/localedata/data/ar_MA.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$1801-د.م.]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$د.م.-1801]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
diff --git a/i18npool/source/localedata/data/ar_QA.xml b/i18npool/source/localedata/data/ar_QA.xml
index 54dc35a..0569743 100644
--- a/i18npool/source/localedata/data/ar_QA.xml
+++ b/i18npool/source/localedata/data/ar_QA.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$4001-ر.ق.]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$ر.ق.-4001]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
diff --git a/i18npool/source/localedata/data/ar_SY.xml b/i18npool/source/localedata/data/ar_SY.xml
index ec1ff08..b002872 100644
--- a/i18npool/source/localedata/data/ar_SY.xml
+++ b/i18npool/source/localedata/data/ar_SY.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$2801-ل.س.]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$ل.س.-2801]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
diff --git a/i18npool/source/localedata/data/ar_YE.xml b/i18npool/source/localedata/data/ar_YE.xml
index 38fc855..0479084 100644
--- a/i18npool/source/localedata/data/ar_YE.xml
+++ b/i18npool/source/localedata/data/ar_YE.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$2401-ر.ي.]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$ر.ي.-2401]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
commit 5ef5b31b563f2c2d40d583a59001b78ede57526e
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Nov 9 17:34:29 2015 +0100

    strip leading zero from LangID in currency format, tdf#95485 follow-up
    
    Change-Id: Id4be326683f4be745284d0951768047d830570c1

diff --git a/i18npool/source/localedata/data/ar_IQ.xml b/i18npool/source/localedata/data/ar_IQ.xml
index 70c5111..4001437 100644
--- a/i18npool/source/localedata/data/ar_IQ.xml
+++ b/i18npool/source/localedata/data/ar_IQ.xml
@@ -20,7 +20,7 @@
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
-  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$0801-د.ع.]"/>
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$801-د.ع.]"/>
   <LC_COLLATION ref="ar_SA" />
   <LC_SEARCH ref="ar_SA"/>
   <LC_INDEX ref="ar_SA"/>
commit 9158ad31905be0658aa08dab8bd5e6407065c0de
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Nov 9 17:31:13 2015 +0100

    remove erroneous extra </DefaultName> closing tag, tdf#95485 follow-up
    
    Change-Id: Ie7573d79f74d601abd340d028080dcb50a78917a

diff --git a/i18npool/source/localedata/data/ar_BH.xml b/i18npool/source/localedata/data/ar_BH.xml
index d15bccf..35a55d8 100644
--- a/i18npool/source/localedata/data/ar_BH.xml
+++ b/i18npool/source/localedata/data/ar_BH.xml
@@ -16,7 +16,7 @@
     </Language>
     <Country>
       <CountryID>BH</CountryID>
-      <DefaultName>Bahrain</DefaultName></DefaultName>
+      <DefaultName>Bahrain</DefaultName>
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
diff --git a/i18npool/source/localedata/data/ar_IQ.xml b/i18npool/source/localedata/data/ar_IQ.xml
index d14ef69..70c5111 100644
--- a/i18npool/source/localedata/data/ar_IQ.xml
+++ b/i18npool/source/localedata/data/ar_IQ.xml
@@ -16,7 +16,7 @@
     </Language>
     <Country>
       <CountryID>IQ</CountryID>
-      <DefaultName>Iraq</DefaultName></DefaultName>
+      <DefaultName>Iraq</DefaultName>
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
diff --git a/i18npool/source/localedata/data/ar_JO.xml b/i18npool/source/localedata/data/ar_JO.xml
index 7352387..d6c4d1b 100644
--- a/i18npool/source/localedata/data/ar_JO.xml
+++ b/i18npool/source/localedata/data/ar_JO.xml
@@ -16,7 +16,7 @@
     </Language>
     <Country>
       <CountryID>JO</CountryID>
-      <DefaultName>Jordan</DefaultName></DefaultName>
+      <DefaultName>Jordan</DefaultName>
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
diff --git a/i18npool/source/localedata/data/ar_LY.xml b/i18npool/source/localedata/data/ar_LY.xml
index 1ba7036..14e8bea 100644
--- a/i18npool/source/localedata/data/ar_LY.xml
+++ b/i18npool/source/localedata/data/ar_LY.xml
@@ -16,7 +16,7 @@
     </Language>
     <Country>
       <CountryID>LY</CountryID>
-      <DefaultName>Libya</DefaultName></DefaultName>
+      <DefaultName>Libya</DefaultName>
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
diff --git a/i18npool/source/localedata/data/ar_MA.xml b/i18npool/source/localedata/data/ar_MA.xml
index f37030e..f52a3bc 100644
--- a/i18npool/source/localedata/data/ar_MA.xml
+++ b/i18npool/source/localedata/data/ar_MA.xml
@@ -16,7 +16,7 @@
     </Language>
     <Country>
       <CountryID>MA</CountryID>
-      <DefaultName>Morocco</DefaultName></DefaultName>
+      <DefaultName>Morocco</DefaultName>
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
diff --git a/i18npool/source/localedata/data/ar_QA.xml b/i18npool/source/localedata/data/ar_QA.xml
index e18a3c8..54dc35a 100644
--- a/i18npool/source/localedata/data/ar_QA.xml
+++ b/i18npool/source/localedata/data/ar_QA.xml
@@ -16,7 +16,7 @@
     </Language>
     <Country>
       <CountryID>QA</CountryID>
-      <DefaultName>Qatar</DefaultName></DefaultName>
+      <DefaultName>Qatar</DefaultName>
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
diff --git a/i18npool/source/localedata/data/ar_SY.xml b/i18npool/source/localedata/data/ar_SY.xml
index 12dbfd7..ec1ff08 100644
--- a/i18npool/source/localedata/data/ar_SY.xml
+++ b/i18npool/source/localedata/data/ar_SY.xml
@@ -16,7 +16,7 @@
     </Language>
     <Country>
       <CountryID>SY</CountryID>
-      <DefaultName>Syria</DefaultName></DefaultName>
+      <DefaultName>Syria</DefaultName>
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
diff --git a/i18npool/source/localedata/data/ar_YE.xml b/i18npool/source/localedata/data/ar_YE.xml
index 0ddfc8a..38fc855 100644
--- a/i18npool/source/localedata/data/ar_YE.xml
+++ b/i18npool/source/localedata/data/ar_YE.xml
@@ -16,7 +16,7 @@
     </Language>
     <Country>
       <CountryID>YE</CountryID>
-      <DefaultName>Yemen</DefaultName></DefaultName>
+      <DefaultName>Yemen</DefaultName>
     </Country>
   </LC_INFO>
   <LC_CTYPE ref="ar_SA" />
commit 1b9495b4e8c27c3e9a6a46e6fec12d1150362dad
Author: Ghasan <devghasan at hotmail.com>
Date:   Mon Nov 9 17:25:52 2015 +0100

    add [ar-{BH,IQ,JO,LY,MA,QA,SY,YE}] locale data, tdf#95485
    
    Change-Id: I55eea19b0302053691eb76b7785276a89bcd136a

diff --git a/i18npool/source/localedata/data/ar_BH.xml b/i18npool/source/localedata/data/ar_BH.xml
new file mode 100644
index 0000000..d15bccf
--- /dev/null
+++ b/i18npool/source/localedata/data/ar_BH.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+  <LC_INFO>
+    <Language>
+      <LangID>ar</LangID>
+      <DefaultName>Arabic</DefaultName>
+    </Language>
+    <Country>
+      <CountryID>BH</CountryID>
+      <DefaultName>Bahrain</DefaultName></DefaultName>
+    </Country>
+  </LC_INFO>
+  <LC_CTYPE ref="ar_SA" />
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$3C01-د.ب.]"/>
+  <LC_COLLATION ref="ar_SA" />
+  <LC_SEARCH ref="ar_SA"/>
+  <LC_INDEX ref="ar_SA"/>
+  <LC_CALENDAR ref="ar_SA" />
+  <LC_CURRENCY>
+    <Currency default="true" usedInCompatibleFormatCodes="true">
+      <CurrencyID>BHD</CurrencyID>
+      <CurrencySymbol>د.ب.</CurrencySymbol>
+      <BankSymbol>BHD</BankSymbol>
+      <CurrencyName>BHD</CurrencyName>
+      <DecimalPlaces>2</DecimalPlaces>
+    </Currency>
+  </LC_CURRENCY>
+  <LC_TRANSLITERATION ref="ar_SA"/>
+  <LC_MISC ref="ar_SA"/>
+  <LC_NumberingLevel ref="ar_SA"/>
+  <LC_OutLineNumberingLevel ref="ar_SA"/>
+</Locale>
diff --git a/i18npool/source/localedata/data/ar_IQ.xml b/i18npool/source/localedata/data/ar_IQ.xml
new file mode 100644
index 0000000..d14ef69
--- /dev/null
+++ b/i18npool/source/localedata/data/ar_IQ.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+  <LC_INFO>
+    <Language>
+      <LangID>ar</LangID>
+      <DefaultName>Arabic</DefaultName>
+    </Language>
+    <Country>
+      <CountryID>IQ</CountryID>
+      <DefaultName>Iraq</DefaultName></DefaultName>
+    </Country>
+  </LC_INFO>
+  <LC_CTYPE ref="ar_SA" />
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$0801-د.ع.]"/>
+  <LC_COLLATION ref="ar_SA" />
+  <LC_SEARCH ref="ar_SA"/>
+  <LC_INDEX ref="ar_SA"/>
+  <LC_CALENDAR ref="ar_SA" />
+  <LC_CURRENCY>
+    <Currency default="true" usedInCompatibleFormatCodes="true">
+      <CurrencyID>IQD</CurrencyID>
+      <CurrencySymbol>د.ع.</CurrencySymbol>
+      <BankSymbol>IQD</BankSymbol>
+      <CurrencyName>IQD</CurrencyName>
+      <DecimalPlaces>2</DecimalPlaces>
+    </Currency>
+  </LC_CURRENCY>
+  <LC_TRANSLITERATION ref="ar_SA"/>
+  <LC_MISC ref="ar_SA"/>
+  <LC_NumberingLevel ref="ar_SA"/>
+  <LC_OutLineNumberingLevel ref="ar_SA"/>
+</Locale>
diff --git a/i18npool/source/localedata/data/ar_JO.xml b/i18npool/source/localedata/data/ar_JO.xml
new file mode 100644
index 0000000..7352387
--- /dev/null
+++ b/i18npool/source/localedata/data/ar_JO.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+  <LC_INFO>
+    <Language>
+      <LangID>ar</LangID>
+      <DefaultName>Arabic</DefaultName>
+    </Language>
+    <Country>
+      <CountryID>JO</CountryID>
+      <DefaultName>Jordan</DefaultName></DefaultName>
+    </Country>
+  </LC_INFO>
+  <LC_CTYPE ref="ar_SA" />
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$2C01-د.أ.]"/>
+  <LC_COLLATION ref="ar_SA" />
+  <LC_SEARCH ref="ar_SA"/>
+  <LC_INDEX ref="ar_SA"/>
+  <LC_CALENDAR ref="ar_SA" />
+  <LC_CURRENCY>
+    <Currency default="true" usedInCompatibleFormatCodes="true">
+      <CurrencyID>JOD</CurrencyID>
+      <CurrencySymbol>د.أ.</CurrencySymbol>
+      <BankSymbol>JOD</BankSymbol>
+      <CurrencyName>JOD</CurrencyName>
+      <DecimalPlaces>2</DecimalPlaces>
+    </Currency>
+  </LC_CURRENCY>
+  <LC_TRANSLITERATION ref="ar_SA"/>
+  <LC_MISC ref="ar_SA"/>
+  <LC_NumberingLevel ref="ar_SA"/>
+  <LC_OutLineNumberingLevel ref="ar_SA"/>
+</Locale>
diff --git a/i18npool/source/localedata/data/ar_LY.xml b/i18npool/source/localedata/data/ar_LY.xml
new file mode 100644
index 0000000..1ba7036
--- /dev/null
+++ b/i18npool/source/localedata/data/ar_LY.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+  <LC_INFO>
+    <Language>
+      <LangID>ar</LangID>
+      <DefaultName>Arabic</DefaultName>
+    </Language>
+    <Country>
+      <CountryID>LY</CountryID>
+      <DefaultName>Libya</DefaultName></DefaultName>
+    </Country>
+  </LC_INFO>
+  <LC_CTYPE ref="ar_SA" />
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$1001-د.ل.]"/>
+  <LC_COLLATION ref="ar_SA" />
+  <LC_SEARCH ref="ar_SA"/>
+  <LC_INDEX ref="ar_SA"/>
+  <LC_CALENDAR ref="ar_SA" />
+  <LC_CURRENCY>
+    <Currency default="true" usedInCompatibleFormatCodes="true">
+      <CurrencyID>LYD</CurrencyID>
+      <CurrencySymbol>د.ل.</CurrencySymbol>
+      <BankSymbol>LYD</BankSymbol>
+      <CurrencyName>LYD</CurrencyName>
+      <DecimalPlaces>2</DecimalPlaces>
+    </Currency>
+  </LC_CURRENCY>
+  <LC_TRANSLITERATION ref="ar_SA"/>
+  <LC_MISC ref="ar_SA"/>
+  <LC_NumberingLevel ref="ar_SA"/>
+  <LC_OutLineNumberingLevel ref="ar_SA"/>
+</Locale>
diff --git a/i18npool/source/localedata/data/ar_MA.xml b/i18npool/source/localedata/data/ar_MA.xml
new file mode 100644
index 0000000..f37030e
--- /dev/null
+++ b/i18npool/source/localedata/data/ar_MA.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+  <LC_INFO>
+    <Language>
+      <LangID>ar</LangID>
+      <DefaultName>Arabic</DefaultName>
+    </Language>
+    <Country>
+      <CountryID>MA</CountryID>
+      <DefaultName>Morocco</DefaultName></DefaultName>
+    </Country>
+  </LC_INFO>
+  <LC_CTYPE ref="ar_SA" />
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$1801-د.م.]"/>
+  <LC_COLLATION ref="ar_SA" />
+  <LC_SEARCH ref="ar_SA"/>
+  <LC_INDEX ref="ar_SA"/>
+  <LC_CALENDAR ref="ar_TN" />
+  <LC_CURRENCY>
+    <Currency default="true" usedInCompatibleFormatCodes="true">
+      <CurrencyID>MAD</CurrencyID>
+      <CurrencySymbol>د.م.</CurrencySymbol>
+      <BankSymbol>MAD</BankSymbol>
+      <CurrencyName>MAD</CurrencyName>
+      <DecimalPlaces>2</DecimalPlaces>
+    </Currency>
+  </LC_CURRENCY>
+  <LC_TRANSLITERATION ref="ar_SA"/>
+  <LC_MISC ref="ar_SA"/>
+  <LC_NumberingLevel ref="ar_SA"/>
+  <LC_OutLineNumberingLevel ref="ar_SA"/>
+</Locale>
diff --git a/i18npool/source/localedata/data/ar_QA.xml b/i18npool/source/localedata/data/ar_QA.xml
new file mode 100644
index 0000000..e18a3c8
--- /dev/null
+++ b/i18npool/source/localedata/data/ar_QA.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+  <LC_INFO>
+    <Language>
+      <LangID>ar</LangID>
+      <DefaultName>Arabic</DefaultName>
+    </Language>
+    <Country>
+      <CountryID>QA</CountryID>
+      <DefaultName>Qatar</DefaultName></DefaultName>
+    </Country>
+  </LC_INFO>
+  <LC_CTYPE ref="ar_SA" />
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$4001-ر.ق.]"/>
+  <LC_COLLATION ref="ar_SA" />
+  <LC_SEARCH ref="ar_SA"/>
+  <LC_INDEX ref="ar_SA"/>
+  <LC_CALENDAR ref="ar_SA" />
+  <LC_CURRENCY>
+    <Currency default="true" usedInCompatibleFormatCodes="true">
+      <CurrencyID>QAR</CurrencyID>
+      <CurrencySymbol>ر.ق.</CurrencySymbol>
+      <BankSymbol>QAR</BankSymbol>
+      <CurrencyName>QAR</CurrencyName>
+      <DecimalPlaces>2</DecimalPlaces>
+    </Currency>
+  </LC_CURRENCY>
+  <LC_TRANSLITERATION ref="ar_SA"/>
+  <LC_MISC ref="ar_SA"/>
+  <LC_NumberingLevel ref="ar_SA"/>
+  <LC_OutLineNumberingLevel ref="ar_SA"/>
+</Locale>
diff --git a/i18npool/source/localedata/data/ar_SY.xml b/i18npool/source/localedata/data/ar_SY.xml
new file mode 100644
index 0000000..12dbfd7
--- /dev/null
+++ b/i18npool/source/localedata/data/ar_SY.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+  <LC_INFO>
+    <Language>
+      <LangID>ar</LangID>
+      <DefaultName>Arabic</DefaultName>
+    </Language>
+    <Country>
+      <CountryID>SY</CountryID>
+      <DefaultName>Syria</DefaultName></DefaultName>
+    </Country>
+  </LC_INFO>
+  <LC_CTYPE ref="ar_SA" />
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$2801-ل.س.]"/>
+  <LC_COLLATION ref="ar_SA" />
+  <LC_SEARCH ref="ar_SA"/>
+  <LC_INDEX ref="ar_SA"/>
+  <LC_CALENDAR ref="ar_LB" />
+  <LC_CURRENCY>
+    <Currency default="true" usedInCompatibleFormatCodes="true">
+      <CurrencyID>SYP</CurrencyID>
+      <CurrencySymbol>ل.س.</CurrencySymbol>
+      <BankSymbol>SYP</BankSymbol>
+      <CurrencyName>SYP</CurrencyName>
+      <DecimalPlaces>2</DecimalPlaces>
+    </Currency>
+  </LC_CURRENCY>
+  <LC_TRANSLITERATION ref="ar_SA"/>
+  <LC_MISC ref="ar_SA"/>
+  <LC_NumberingLevel ref="ar_SA"/>
+  <LC_OutLineNumberingLevel ref="ar_SA"/>
+</Locale>
diff --git a/i18npool/source/localedata/data/ar_YE.xml b/i18npool/source/localedata/data/ar_YE.xml
new file mode 100644
index 0000000..0ddfc8a
--- /dev/null
+++ b/i18npool/source/localedata/data/ar_YE.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+  <LC_INFO>
+    <Language>
+      <LangID>ar</LangID>
+      <DefaultName>Arabic</DefaultName>
+    </Language>
+    <Country>
+      <CountryID>YE</CountryID>
+      <DefaultName>Yemen</DefaultName></DefaultName>
+    </Country>
+  </LC_INFO>
+  <LC_CTYPE ref="ar_SA" />
+  <LC_FORMAT ref="ar_SA" replaceFrom="[CURRENCY]" replaceTo="[$2401-ر.ي.]"/>
+  <LC_COLLATION ref="ar_SA" />
+  <LC_SEARCH ref="ar_SA"/>
+  <LC_INDEX ref="ar_SA"/>
+  <LC_CALENDAR ref="ar_SA" />
+  <LC_CURRENCY>
+    <Currency default="true" usedInCompatibleFormatCodes="true">
+      <CurrencyID>YER</CurrencyID>
+      <CurrencySymbol>ر.ي.</CurrencySymbol>
+      <BankSymbol>YER</BankSymbol>
+      <CurrencyName>YER</CurrencyName>
+      <DecimalPlaces>2</DecimalPlaces>
+    </Currency>
+  </LC_CURRENCY>
+  <LC_TRANSLITERATION ref="ar_SA"/>
+  <LC_MISC ref="ar_SA"/>
+  <LC_NumberingLevel ref="ar_SA"/>
+  <LC_OutLineNumberingLevel ref="ar_SA"/>
+</Locale>
commit 6626a569a47751b65230f2ee95345640dbe8a562
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date:   Mon Nov 9 10:16:39 2015 -0600

    do not force-disable ccache for jenkins-ubsan build
    
    Change-Id: I791d9d6710462ba0a325228a890b941f6000ce13

diff --git a/distro-configs/Jenkins/Linux_ubsan_master.conf b/distro-configs/Jenkins/Linux_ubsan_master.conf
index 44baa50..0c23236 100644
--- a/distro-configs/Jenkins/Linux_ubsan_master.conf
+++ b/distro-configs/Jenkins/Linux_ubsan_master.conf
@@ -1,4 +1,3 @@
---disable-ccache
 --disable-ooenv
 --enable-avahi
 --enable-dbgutil
commit 9ed9f30f2202cc7d57b1dbe68a37cc6fbbd2866a
Author: Michael Stahl <mstahl at redhat.com>
Date:   Mon Nov 9 15:25:29 2015 +0100

    starmath: replace boost::ptr_deque with std::deque<std::unique_ptr>
    
    Change-Id: I1d2671a0b355bd4dbb195d69af2c432c50df904e

diff --git a/starmath/inc/node.hxx b/starmath/inc/node.hxx
index 3126f58..c7f71ba 100644
--- a/starmath/inc/node.hxx
+++ b/starmath/inc/node.hxx
@@ -20,16 +20,16 @@
 #ifndef INCLUDED_STARMATH_INC_NODE_HXX
 #define INCLUDED_STARMATH_INC_NODE_HXX
 
-#include <vector>
-#include <ostream>
-
 #include "types.hxx"
 #include "token.hxx"
 #include "error.hxx"
 #include "rect.hxx"
 #include "format.hxx"
-#include <boost/ptr_container/ptr_deque.hpp>
+
 #include <memory>
+#include <vector>
+#include <deque>
+#include <ostream>
 
 #define ATTR_BOLD       0x0001
 #define ATTR_ITALIC     0x0002
@@ -61,15 +61,16 @@ class SmNode;
 class SmStructureNode;
 
 typedef std::shared_ptr<SmNode> SmNodePointer;
-typedef boost::ptr_deque<SmNode> SmNodeStack;
+typedef std::deque<std::unique_ptr<SmNode>> SmNodeStack;
 typedef std::vector< SmNode * > SmNodeArray;
 
 template < typename T >
-T* popOrZero( boost::ptr_deque<T> & rStack )
+T* popOrZero(std::deque<std::unique_ptr<T>> & rStack)
 {
     if (rStack.empty())
-        return 0;
-    auto pTmp = rStack.pop_front();
+        return nullptr;
+    std::unique_ptr<T> pTmp(std::move(rStack.front()));
+    rStack.pop_front();
     return pTmp.release();
 }
 
diff --git a/starmath/source/mathmlimport.cxx b/starmath/source/mathmlimport.cxx
index 658b6b4..98cb9ad 100644
--- a/starmath/source/mathmlimport.cxx
+++ b/starmath/source/mathmlimport.cxx
@@ -42,6 +42,7 @@ one go*/
 #include <comphelper/processfactory.hxx>
 #include <comphelper/servicehelper.hxx>
 #include <comphelper/string.hxx>
+#include <o3tl/make_unique.hxx>
 #include <rtl/math.hxx>
 #include <sfx2/frame.hxx>
 #include <sfx2/docfile.hxx>
@@ -670,9 +671,9 @@ void SmXMLContext_Helper::ApplyAttrs()
                 aToken.eType = TBOLD;
             else
                 aToken.eType = TNBOLD;
-            SmFontNode *pFontNode = new SmFontNode(aToken);
+            std::unique_ptr<SmFontNode> pFontNode(new SmFontNode(aToken));
             pFontNode->SetSubNodes(0,popOrZero(rNodeStack));
-            rNodeStack.push_front(pFontNode);
+            rNodeStack.push_front(std::move(pFontNode));
         }
         if (nIsItalic != -1)
         {
@@ -680,14 +681,14 @@ void SmXMLContext_Helper::ApplyAttrs()
                 aToken.eType = TITALIC;
             else
                 aToken.eType = TNITALIC;
-            SmFontNode *pFontNode = new SmFontNode(aToken);
+            std::unique_ptr<SmFontNode> pFontNode(new SmFontNode(aToken));
             pFontNode->SetSubNodes(0,popOrZero(rNodeStack));
-            rNodeStack.push_front(pFontNode);
+            rNodeStack.push_front(std::move(pFontNode));
         }
         if (nFontSize != 0.0)
         {
             aToken.eType = TSIZE;
-            SmFontNode *pFontNode = new SmFontNode(aToken);
+            std::unique_ptr<SmFontNode> pFontNode(new SmFontNode(aToken));
 
             if (util::MeasureUnit::PERCENT == rContext.GetSmImport()
                     .GetMM100UnitConverter().GetXMLMeasureUnit())
@@ -703,7 +704,7 @@ void SmXMLContext_Helper::ApplyAttrs()
                 pFontNode->SetSizeParameter(Fraction(nFontSize),FontSizeType::ABSOLUT);
 
             pFontNode->SetSubNodes(0,popOrZero(rNodeStack));
-            rNodeStack.push_front(pFontNode);
+            rNodeStack.push_front(std::move(pFontNode));
         }
         if (!sFontFamily.isEmpty())
         {
@@ -718,9 +719,9 @@ void SmXMLContext_Helper::ApplyAttrs()
                 return;
 
             aToken.aText = sFontFamily;
-            SmFontNode *pFontNode = new SmFontNode(aToken);
+            std::unique_ptr<SmFontNode> pFontNode(new SmFontNode(aToken));
             pFontNode->SetSubNodes(0,popOrZero(rNodeStack));
-            rNodeStack.push_front(pFontNode);
+            rNodeStack.push_front(std::move(pFontNode));
         }
         if (!sColor.isEmpty())
         {
@@ -732,9 +733,9 @@ void SmXMLContext_Helper::ApplyAttrs()
             if (tok != XML_TOK_UNKNOWN)
             {
                 aToken.eType = static_cast<SmTokenType>(tok);
-                SmFontNode *pFontNode = new SmFontNode(aToken);
+                std::unique_ptr<SmFontNode> pFontNode(new SmFontNode(aToken));
                 pFontNode->SetSubNodes(0,popOrZero(rNodeStack));
-                rNodeStack.push_front(pFontNode);
+                rNodeStack.push_front(std::move(pFontNode));
             }
         }
 
@@ -929,10 +930,10 @@ void SmXMLPhantomContext_Impl::EndElement()
     aToken.nLevel = 5;
     aToken.eType = TPHANTOM;
 
-    SmFontNode *pPhantom = new SmFontNode(aToken);
+    std::unique_ptr<SmFontNode> pPhantom(new SmFontNode(aToken));
     SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
     pPhantom->SetSubNodes(0,popOrZero(rNodeStack));
-    rNodeStack.push_front(pPhantom);
+    rNodeStack.push_front(std::move(pPhantom));
 }
 
 
@@ -994,7 +995,7 @@ void SmXMLFencedContext_Impl::EndElement()
 
     aToken.eType = TLPARENT;
     aToken.cMathChar = cBegin;
-    SmStructureNode *pSNode = new SmBraceNode(aToken);
+    std::unique_ptr<SmStructureNode> pSNode(new SmBraceNode(aToken));
     SmNode *pLeft = new SmMathSymbolNode(aToken);
 
     aToken.cMathChar = cEnd;
@@ -1014,7 +1015,8 @@ void SmXMLFencedContext_Impl::EndElement()
     aRelationArray.resize(i);
     while (rNodeStack.size() > nElementCount)
     {
-        auto pNode = rNodeStack.pop_front();
+        auto pNode = std::move(rNodeStack.front());
+        rNodeStack.pop_front();
         aRelationArray[--i] = pNode.release();
         if (i > 1 && rNodeStack.size() > 1)
             aRelationArray[--i] = new SmGlyphSpecialNode(aToken);
@@ -1027,7 +1029,7 @@ void SmXMLFencedContext_Impl::EndElement()
 
     pSNode->SetSubNodes(pLeft,pBody,pRight);
     pSNode->SetScaleMode(SCALE_HEIGHT);
-    GetSmImport().GetNodeStack().push_front(pSNode);
+    GetSmImport().GetNodeStack().push_front(std::move(pSNode));
 }
 
 
@@ -1088,7 +1090,7 @@ void SmXMLNumberContext_Impl::TCharacters(const OUString &rChars)
 
 void SmXMLNumberContext_Impl::EndElement()
 {
-    GetSmImport().GetNodeStack().push_front(new SmTextNode(aToken,FNT_NUMBER));
+    GetSmImport().GetNodeStack().push_front(o3tl::make_unique<SmTextNode>(aToken,FNT_NUMBER));
 }
 
 
@@ -1167,7 +1169,7 @@ void SmXMLTextContext_Impl::TCharacters(const OUString &rChars)
 
 void SmXMLTextContext_Impl::EndElement()
 {
-    GetSmImport().GetNodeStack().push_front(new SmTextNode(aToken,FNT_TEXT));
+    GetSmImport().GetNodeStack().push_front(o3tl::make_unique<SmTextNode>(aToken,FNT_TEXT));
 }
 
 
@@ -1209,7 +1211,7 @@ void SmXMLStringContext_Impl::TCharacters(const OUString &rChars)
 
 void SmXMLStringContext_Impl::EndElement()
 {
-    GetSmImport().GetNodeStack().push_front(new SmTextNode(aToken,FNT_FIXED));
+    GetSmImport().GetNodeStack().push_front(o3tl::make_unique<SmTextNode>(aToken,FNT_FIXED));
 }
 
 
@@ -1240,18 +1242,18 @@ public:
 
 void SmXMLIdentifierContext_Impl::EndElement()
 {
-    SmTextNode *pNode = 0;
+    std::unique_ptr<SmTextNode> pNode;
     //we will handle identifier italic/normal here instead of with a standalone
     //font node
     if (((aStyleHelper.nIsItalic == -1) && (aToken.aText.getLength() > 1))
         || ((aStyleHelper.nIsItalic == 0) && (aToken.aText.getLength() == 1)))
     {
-        pNode = new SmTextNode(aToken,FNT_FUNCTION);
+        pNode.reset(new SmTextNode(aToken,FNT_FUNCTION));
         pNode->GetFont().SetItalic(ITALIC_NONE);
         aStyleHelper.nIsItalic = -1;
     }
     else
-        pNode = new SmTextNode(aToken,FNT_VARIABLE);
+        pNode.reset(new SmTextNode(aToken,FNT_VARIABLE));
     if (aStyleHelper.bFontNodeNeeded && aStyleHelper.nIsItalic != -1)
     {
         if (aStyleHelper.nIsItalic)
@@ -1268,7 +1270,7 @@ void SmXMLIdentifierContext_Impl::EndElement()
         aStyleHelper.bFontNodeNeeded=false;
     if (aStyleHelper.bFontNodeNeeded)
         aStyleHelper.ApplyAttrs();
-    GetSmImport().GetNodeStack().push_front(pNode);
+    GetSmImport().GetNodeStack().push_front(std::move(pNode));
 }
 
 void SmXMLIdentifierContext_Impl::TCharacters(const OUString &rChars)
@@ -1306,13 +1308,13 @@ void SmXMLOperatorContext_Impl::TCharacters(const OUString &rChars)
 
 void SmXMLOperatorContext_Impl::EndElement()
 {
-    SmMathSymbolNode *pNode = new SmMathSymbolNode(aToken);
+    std::unique_ptr<SmMathSymbolNode> pNode(new SmMathSymbolNode(aToken));
     //For stretchy scaling the scaling must be retrieved from this node
     //and applied to the expression itself so as to get the expression
     //to scale the operator to the height of the expression itself
     if (bIsStretchy)
         pNode->SetScaleMode(SCALE_HEIGHT);
-    GetSmImport().GetNodeStack().push_front(pNode);
+    GetSmImport().GetNodeStack().push_front(std::move(pNode));
 }
 
 
@@ -1365,9 +1367,9 @@ void SmXMLSpaceContext_Impl::StartElement(
     aToken.cMathChar = '\0';
     aToken.eType = TBLANK;
     aToken.nLevel = 5;
-    SmBlankNode *pBlank = new SmBlankNode(aToken);
+    std::unique_ptr<SmBlankNode> pBlank(new SmBlankNode(aToken));
     pBlank->IncreaseBy(aToken);
-    GetSmImport().GetNodeStack().push_front(pBlank);
+    GetSmImport().GetNodeStack().push_front(std::move(pBlank));
 }
 
 
@@ -1400,7 +1402,7 @@ void SmXMLSubContext_Impl::GenericEndElement(SmTokenType eType, SmSubSup eSubSup
     SmToken aToken;
     aToken.cMathChar = '\0';
     aToken.eType = eType;
-    SmSubSupNode *pNode = new SmSubSupNode(aToken);
+    std::unique_ptr<SmSubSupNode> pNode(new SmSubSupNode(aToken));
     SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
 
     // initialize subnodes array
@@ -1412,7 +1414,7 @@ void SmXMLSubContext_Impl::GenericEndElement(SmTokenType eType, SmSubSup eSubSup
     aSubNodes[eSubSup+1] = popOrZero(rNodeStack);
     aSubNodes[0] = popOrZero(rNodeStack);
     pNode->SetSubNodes(aSubNodes);
-    rNodeStack.push_front(pNode);
+    rNodeStack.push_front(std::move(pNode));
 }
 
 
@@ -1460,7 +1462,7 @@ void SmXMLSubSupContext_Impl::GenericEndElement(SmTokenType eType,
     SmToken aToken;
     aToken.cMathChar = '\0';
     aToken.eType = eType;
-    SmSubSupNode *pNode = new SmSubSupNode(aToken);
+    std::unique_ptr<SmSubSupNode> pNode(new SmSubSupNode(aToken));
     SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
 
     // initialize subnodes array
@@ -1473,7 +1475,7 @@ void SmXMLSubSupContext_Impl::GenericEndElement(SmTokenType eType,
     aSubNodes[aSub+1] = popOrZero(rNodeStack);
     aSubNodes[0] =  popOrZero(rNodeStack);
     pNode->SetSubNodes(aSubNodes);
-    rNodeStack.push_front(pNode);
+    rNodeStack.push_front(std::move(pNode));
 }
 
 
@@ -1519,7 +1521,7 @@ void SmXMLUnderContext_Impl::HandleAccent()
     SmNodeArray aSubNodes;
     aSubNodes.resize(2);
 
-    SmStructureNode *pNode = new SmAttributNode(aToken);
+    std::unique_ptr<SmStructureNode> pNode(new SmAttributNode(aToken));
     if ((pTest->GetToken().cMathChar & 0x0FFF) == 0x0332)
     {
         aSubNodes[0] = new SmRectangleNode(aToken);
@@ -1531,7 +1533,7 @@ void SmXMLUnderContext_Impl::HandleAccent()
     aSubNodes[1] = popOrZero(rNodeStack);
     pNode->SetSubNodes(aSubNodes);
     pNode->SetScaleMode(SCALE_WIDTH);
-    rNodeStack.push_front(pNode);
+    rNodeStack.push_front(std::move(pNode));
 }
 
 
@@ -1588,7 +1590,7 @@ void SmXMLOverContext_Impl::HandleAccent()
     aToken.cMathChar = '\0';
     aToken.eType = TACUTE;
 
-    SmAttributNode *pNode = new SmAttributNode(aToken);
+    std::unique_ptr<SmAttributNode> pNode(new SmAttributNode(aToken));
     SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
 
     SmNodeArray aSubNodes;
@@ -1597,7 +1599,7 @@ void SmXMLOverContext_Impl::HandleAccent()
     aSubNodes[1] = popOrZero(rNodeStack);
     pNode->SetSubNodes(aSubNodes);
     pNode->SetScaleMode(SCALE_WIDTH);
-    rNodeStack.push_front(pNode);
+    rNodeStack.push_front(std::move(pNode));
 
 }
 
@@ -1657,7 +1659,7 @@ void SmXMLNoneContext_Impl::EndElement()
     aToken.nLevel = 5;
     aToken.eType = TIDENT;
     GetSmImport().GetNodeStack().push_front(
-        new SmTextNode(aToken,FNT_VARIABLE));
+        o3tl::make_unique<SmTextNode>(aToken,FNT_VARIABLE));
 }
 
 
@@ -2136,21 +2138,22 @@ void SmXMLDocContext_Impl::EndElement()
     ContextArray[0] = popOrZero(rNodeStack);
 
     SmToken aDummy;
-    SmStructureNode *pSNode = new SmLineNode(aDummy);
+    std::unique_ptr<SmStructureNode> pSNode(new SmLineNode(aDummy));
     pSNode->SetSubNodes(ContextArray);
-    rNodeStack.push_front(pSNode);
+    rNodeStack.push_front(std::move(pSNode));
 
     SmNodeArray  LineArray;
     auto n = rNodeStack.size();
     LineArray.resize(n);
     for (size_t j = 0; j < n; j++)
     {
-        auto pNode = rNodeStack.pop_front();
+        auto pNode = std::move(rNodeStack.front());
+        rNodeStack.pop_front();
         LineArray[n - (j + 1)] = pNode.release();
     }
-    SmStructureNode *pSNode2 = new SmTableNode(aDummy);
+    std::unique_ptr<SmStructureNode> pSNode2(new SmTableNode(aDummy));
     pSNode2->SetSubNodes(LineArray);
-    rNodeStack.push_front(pSNode2);
+    rNodeStack.push_front(std::move(pSNode2));
 }
 
 void SmXMLFracContext_Impl::EndElement()
@@ -2164,12 +2167,12 @@ void SmXMLFracContext_Impl::EndElement()
     SmToken aToken;
     aToken.cMathChar = '\0';
     aToken.eType = TOVER;
-    SmStructureNode *pSNode = new SmBinVerNode(aToken);
+    std::unique_ptr<SmStructureNode> pSNode(new SmBinVerNode(aToken));
     SmNode *pOper = new SmRectangleNode(aToken);
     SmNode *pSecond = popOrZero(rNodeStack);
     SmNode *pFirst = popOrZero(rNodeStack);
     pSNode->SetSubNodes(pFirst,pOper,pSecond);
-    rNodeStack.push_front(pSNode);
+    rNodeStack.push_front(std::move(pSNode));
 }
 
 void SmXMLRootContext_Impl::EndElement()
@@ -2183,13 +2186,13 @@ void SmXMLRootContext_Impl::EndElement()
     SmToken aToken;
     aToken.cMathChar = MS_SQRT;  //Temporary: alert, based on StarSymbol font
     aToken.eType = TNROOT;
-    SmStructureNode *pSNode = new SmRootNode(aToken);
+    std::unique_ptr<SmStructureNode> pSNode(new SmRootNode(aToken));
     SmNode *pOper = new SmRootSymbolNode(aToken);
     SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
     SmNode *pIndex = popOrZero(rNodeStack);
     SmNode *pBase = popOrZero(rNodeStack);
     pSNode->SetSubNodes(pIndex,pOper,pBase);
-    rNodeStack.push_front(pSNode);
+    rNodeStack.push_front(std::move(pSNode));
 }
 
 void SmXMLSqrtContext_Impl::EndElement()
@@ -2205,11 +2208,11 @@ void SmXMLSqrtContext_Impl::EndElement()
     SmToken aToken;
     aToken.cMathChar = MS_SQRT;  //Temporary: alert, based on StarSymbol font
     aToken.eType = TSQRT;
-    SmStructureNode *pSNode = new SmRootNode(aToken);
+    std::unique_ptr<SmStructureNode> pSNode(new SmRootNode(aToken));
     SmNode *pOper = new SmRootSymbolNode(aToken);
     SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
     pSNode->SetSubNodes(0,pOper,popOrZero(rNodeStack));
-    rNodeStack.push_front(pSNode);
+    rNodeStack.push_front(std::move(pSNode));
 }
 
 void SmXMLRowContext_Impl::EndElement()
@@ -2224,7 +2227,8 @@ void SmXMLRowContext_Impl::EndElement()
         aRelationArray.resize(nSize);
         for (auto j=nSize;j > 0;j--)
         {
-            auto pNode = rNodeStack.pop_front();
+            auto pNode = std::move(rNodeStack.front());
+            rNodeStack.pop_front();
             aRelationArray[j-1] = pNode.release();
         }
 
@@ -2279,13 +2283,13 @@ void SmXMLRowContext_Impl::EndElement()
             }
 
             SmToken aDummy;
-            SmStructureNode *pSNode = new SmBraceNode(aToken);
+            std::unique_ptr<SmStructureNode> pSNode(new SmBraceNode(aToken));
             SmStructureNode *pBody = new SmExpressionNode(aDummy);
             pBody->SetSubNodes(aRelationArray2);
 
             pSNode->SetSubNodes(pLeft,pBody,pRight);
             pSNode->SetScaleMode(SCALE_HEIGHT);
-            rNodeStack.push_front(pSNode);
+            rNodeStack.push_front(std::move(pSNode));
             return;
         }
     }
@@ -2300,9 +2304,9 @@ void SmXMLRowContext_Impl::EndElement()
     }
 
     SmToken aDummy;
-    SmStructureNode *pSNode = new SmExpressionNode(aDummy);
+    std::unique_ptr<SmStructureNode> pSNode(new SmExpressionNode(aDummy));
     pSNode->SetSubNodes(aRelationArray);
-    rNodeStack.push_front(pSNode);
+    rNodeStack.push_front(std::move(pSNode));
 }
 
 
@@ -2429,8 +2433,9 @@ void SmXMLMultiScriptsContext_Impl::ProcessSubSupPairs(bool bIsPrescript)
         SmNodeStack aReverseStack;
         for (size_t i = 0; i < nCount + 1; i++)
         {
-            auto pNode = rNodeStack.pop_front();
-            aReverseStack.push_front(pNode.release());
+            auto pNode = std::move(rNodeStack.front());
+            rNodeStack.pop_front();
+            aReverseStack.push_front(std::move(pNode));
         }
 
         SmSubSup eSub = bIsPrescript ? LSUB : RSUB;
@@ -2438,7 +2443,7 @@ void SmXMLMultiScriptsContext_Impl::ProcessSubSupPairs(bool bIsPrescript)
 
         for (size_t i = 0; i < nCount; i += 2)
         {
-            SmSubSupNode *pNode = new SmSubSupNode(aToken);
+            std::unique_ptr<SmSubSupNode> pNode(new SmSubSupNode(aToken));
 
             // initialize subnodes array
             SmNodeArray aSubNodes(1 + SUBSUP_NUM_ENTRIES);
@@ -2459,11 +2464,12 @@ void SmXMLMultiScriptsContext_Impl::ProcessSubSupPairs(bool bIsPrescript)
                 aSubNodes[eSup+1] = pScriptNode;
 
             pNode->SetSubNodes(aSubNodes);
-            aReverseStack.push_front(pNode);
+            aReverseStack.push_front(std::move(pNode));
         }
         assert(!aReverseStack.empty());
-        auto pNode = aReverseStack.pop_front();
-        rNodeStack.push_front(pNode.release());
+        auto pNode = std::move(aReverseStack.front());
+        aReverseStack.pop_front();
+        rNodeStack.push_front(std::move(pNode));
     }
     else
     {
@@ -2489,8 +2495,8 @@ void SmXMLTableContext_Impl::EndElement()
     SmStructureNode *pArray;
     for (auto i=nRows;i > 0;i--)
     {
-        auto pNode = rNodeStack.pop_front();
-        pArray = static_cast<SmStructureNode *>(pNode.release());
+        pArray = static_cast<SmStructureNode *>(rNodeStack.front().release());
+        rNodeStack.pop_front();
         if (pArray->GetNumSubNodes() == 0)
         {
             //This is a little tricky, it is possible that there was
@@ -2511,14 +2517,14 @@ void SmXMLTableContext_Impl::EndElement()
 
         if (pArray->GetNumSubNodes() > nCols)
             nCols = pArray->GetNumSubNodes();
-        aReverseStack.push_front(pArray);
+        aReverseStack.push_front(std::unique_ptr<SmStructureNode>(pArray));
     }
     aExpressionArray.resize(nCols*nRows);
     size_t j=0;
     while ( !aReverseStack.empty() )
     {
-        auto pNode = aReverseStack.pop_front();
-        pArray = static_cast<SmStructureNode *>(pNode.release());
+        pArray = static_cast<SmStructureNode *>(aReverseStack.front().release());
+        aReverseStack.pop_front();
         for (sal_uInt16 i=0;i<pArray->GetNumSubNodes();i++)
             aExpressionArray[j++] = pArray->GetSubNode(i);
     }
@@ -2527,10 +2533,10 @@ void SmXMLTableContext_Impl::EndElement()
     aToken.cMathChar = '\0';
     aToken.nGroup = TRGROUP;
     aToken.eType = TMATRIX;
-    SmMatrixNode *pSNode = new SmMatrixNode(aToken);
+    std::unique_ptr<SmMatrixNode> pSNode(new SmMatrixNode(aToken));
     pSNode->SetSubNodes(aExpressionArray);
     pSNode->SetRowCol(static_cast<sal_uInt16>(nRows),nCols);
-    rNodeStack.push_front(pSNode);
+    rNodeStack.push_front(std::move(pSNode));
 }
 
 SvXMLImportContext *SmXMLTableRowContext_Impl::CreateChildContext(
@@ -2630,12 +2636,13 @@ void SmXMLActionContext_Impl::EndElement()
     {
         rNodeStack.pop_front();
     }
-    auto pSelected = rNodeStack.pop_front();
+    auto pSelected = std::move(rNodeStack.front());
+    rNodeStack.pop_front();
     for (auto i=rNodeStack.size()-nElementCount; i > 0; i--)
     {
         rNodeStack.pop_front();
     }
-    rNodeStack.push_front(pSelected.release());
+    rNodeStack.push_front(std::move(pSelected));
 }
 
 SvXMLImportContext *SmXMLImport::CreateContext(sal_uInt16 nPrefix,
diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx
index e2ae2e2..d59fed9 100644
--- a/starmath/source/parse.cxx
+++ b/starmath/source/parse.cxx
@@ -23,6 +23,7 @@
 #include <editeng/unolingu.hxx>
 #include <unotools/syslocale.hxx>
 #include <sal/macros.h>
+#include <o3tl/make_unique.hxx>
 #include <vcl/settings.hxx>
 #include "parse.hxx"
 #include "starmath.hrc"
@@ -978,13 +979,14 @@ void SmParser::DoTable()
 
     for (size_t i = 0; i < n; i++)
     {
-        auto pNode = m_aNodeStack.pop_front();
+        auto pNode = std::move(m_aNodeStack.front());
+        m_aNodeStack.pop_front();
         LineArray[n - (i + 1)] = pNode.release();
     }
 
-    SmStructureNode *pSNode = new SmTableNode(m_aCurToken);
+    std::unique_ptr<SmStructureNode> pSNode(new SmTableNode(m_aCurToken));
     pSNode->SetSubNodes(LineArray);
-    m_aNodeStack.push_front(pSNode);
+    m_aNodeStack.push_front(std::move(pSNode));
 }
 
 void SmParser::DoAlign()
@@ -1012,7 +1014,7 @@ void SmParser::DoAlign()
     if (pSNode)
     {
         pSNode->SetSubNode(0, popOrZero(m_aNodeStack));
-        m_aNodeStack.push_front(pSNode);
+        m_aNodeStack.push_front(std::unique_ptr<SmStructureNode>(pSNode));
     }
 }
 
@@ -1045,9 +1047,9 @@ void SmParser::DoLine()
         ExpressionArray.push_back(new SmExpressionNode(aTok));
     }
 
-    SmStructureNode *pSNode = new SmLineNode(m_aCurToken);
+    std::unique_ptr<SmStructureNode> pSNode(new SmLineNode(m_aCurToken));
     pSNode->SetSubNodes(ExpressionArray);
-    m_aNodeStack.push_front(pSNode);
+    m_aNodeStack.push_front(std::move(pSNode));
 }
 
 void SmParser::DoExpression()
@@ -1055,11 +1057,16 @@ void SmParser::DoExpression()
     bool bUseExtraSpaces = true;
     if (!m_aNodeStack.empty())
     {
-        auto pNode = m_aNodeStack.pop_front();
+        auto pNode = std::move(m_aNodeStack.front());
+        m_aNodeStack.pop_front();
         if (pNode->GetToken().eType == TNOSPACE)
             bUseExtraSpaces = false;
         else
-            m_aNodeStack.push_front(pNode.release());  // push the node from above again (now to be used as argument to this current 'nospace' node)
+        {
+            // push the node from above again (now to be used as argument
+            // to this current 'nospace' node)
+            m_aNodeStack.push_front(std::move(pNode));
+        }
     }
 
     SmNodeArray  RelationArray;
@@ -1075,15 +1082,15 @@ void SmParser::DoExpression()
 
     if (RelationArray.size() > 1)
     {
-        SmExpressionNode *pSNode = new SmExpressionNode(m_aCurToken);
+        std::unique_ptr<SmExpressionNode> pSNode(new SmExpressionNode(m_aCurToken));
         pSNode->SetSubNodes(RelationArray);
         pSNode->SetUseExtraSpaces(bUseExtraSpaces);
-        m_aNodeStack.push_front(pSNode);
+        m_aNodeStack.push_front(std::move(pSNode));
     }
     else
     {
         // This expression has only one node so just push this node.
-        m_aNodeStack.push_front(RelationArray[0]);
+        m_aNodeStack.push_front(std::unique_ptr<SmNode>(RelationArray[0]));
     }
 }
 
@@ -1092,7 +1099,7 @@ void SmParser::DoRelation()
     DoSum();
     while (TokenInGroup(TGRELATION))
     {
-        SmStructureNode *pSNode  = new SmBinHorNode(m_aCurToken);
+        std::unique_ptr<SmStructureNode> pSNode(new SmBinHorNode(m_aCurToken));
         SmNode *pFirst = popOrZero(m_aNodeStack);
 
         DoOpSubSup();
@@ -1101,7 +1108,7 @@ void SmParser::DoRelation()
         DoSum();
 
         pSNode->SetSubNodes(pFirst, pSecond, popOrZero(m_aNodeStack));
-        m_aNodeStack.push_front(pSNode);
+        m_aNodeStack.push_front(std::move(pSNode));
     }
 }
 
@@ -1110,7 +1117,7 @@ void SmParser::DoSum()
     DoProduct();
     while (TokenInGroup(TGSUM))
     {
-        SmStructureNode *pSNode  = new SmBinHorNode(m_aCurToken);
+        std::unique_ptr<SmStructureNode> pSNode(new SmBinHorNode(m_aCurToken));
         SmNode *pFirst = popOrZero(m_aNodeStack);
 
         DoOpSubSup();
@@ -1119,7 +1126,7 @@ void SmParser::DoSum()
         DoProduct();
 
         pSNode->SetSubNodes(pFirst, pSecond, popOrZero(m_aNodeStack));
-        m_aNodeStack.push_front(pSNode);
+        m_aNodeStack.push_front(std::move(pSNode));
     }
 }
 
@@ -1195,7 +1202,7 @@ void SmParser::DoProduct()
         {
             pSNode->SetSubNodes(pFirst, pOper, popOrZero(m_aNodeStack));
         }
-        m_aNodeStack.push_front(pSNode);
+        m_aNodeStack.push_front(std::unique_ptr<SmStructureNode>(pSNode));
     }
 }
 
@@ -1208,7 +1215,7 @@ void SmParser::DoSubSup(sal_uLong nActiveGroup)
         // already finish
         return;
 
-    SmSubSupNode *pNode = new SmSubSupNode(m_aCurToken);
+    std::unique_ptr<SmSubSupNode> pNode(new SmSubSupNode(m_aCurToken));
     //! Of course 'm_aCurToken' is just the first sub-/supscript token.
     //! It should be of no further interest. The positions of the
     //! sub-/supscripts will be identified by the corresponding subnodes
@@ -1264,13 +1271,13 @@ void SmParser::DoSubSup(sal_uLong nActiveGroup)
     }
 
     pNode->SetSubNodes(aSubNodes);
-    m_aNodeStack.push_front(pNode);
+    m_aNodeStack.push_front(std::move(pNode));
 }
 
 void SmParser::DoOpSubSup()
 {
     // push operator symbol
-    m_aNodeStack.push_front(new SmMathSymbolNode(m_aCurToken));
+    m_aNodeStack.push_front(o3tl::make_unique<SmMathSymbolNode>(m_aCurToken));
     // skip operator token
     NextToken();
     // get sub- supscripts if any
@@ -1289,7 +1296,7 @@ void SmParser::DoPower()
 void SmParser::DoBlank()
 {
     OSL_ENSURE(TokenInGroup(TGBLANK), "Sm : wrong token");
-    SmBlankNode *pBlankNode = new SmBlankNode(m_aCurToken);
+    std::unique_ptr<SmBlankNode> pBlankNode(new SmBlankNode(m_aCurToken));
 
     while (TokenInGroup(TGBLANK))
     {
@@ -1304,7 +1311,7 @@ void SmParser::DoBlank()
         pBlankNode->Clear();
     }
 
-    m_aNodeStack.push_front(pBlankNode);
+    m_aNodeStack.push_front(std::move(pBlankNode));
 }
 
 void SmParser::DoTerm(bool bGroupNumberIdent)
@@ -1321,7 +1328,7 @@ void SmParser::DoTerm(bool bGroupNumberIdent)
             bool bNoSpace = m_aCurToken.eType == TNOSPACE;
             if (bNoSpace)   // push 'no space' node and continue to parse expression
             {
-                m_aNodeStack.push_front(new SmExpressionNode(m_aCurToken));
+                m_aNodeStack.push_front(o3tl::make_unique<SmExpressionNode>(m_aCurToken));
                 NextToken();
             }
             if (m_aCurToken.eType != TLGROUP)
@@ -1338,9 +1345,9 @@ void SmParser::DoTerm(bool bGroupNumberIdent)
                 {
                     if (bNoSpace)   // get rid of the 'no space' node pushed above
                         m_aNodeStack.pop_front();
-                    SmStructureNode *pSNode = new SmExpressionNode(m_aCurToken);
+                    std::unique_ptr<SmStructureNode> pSNode(new SmExpressionNode(m_aCurToken));
                     pSNode->SetSubNodes(NULL, NULL);
-                    m_aNodeStack.push_front(pSNode);
+                    m_aNodeStack.push_front(std::move(pSNode));
 
                     NextToken();
                 }
@@ -1366,17 +1373,17 @@ void SmParser::DoTerm(bool bGroupNumberIdent)
             break;
 
         case TTEXT :
-            m_aNodeStack.push_front(new SmTextNode(m_aCurToken, FNT_TEXT));
+            m_aNodeStack.push_front(o3tl::make_unique<SmTextNode>(m_aCurToken, FNT_TEXT));
             NextToken();
             break;
         case TCHARACTER :
-            m_aNodeStack.push_front(new SmTextNode(m_aCurToken, FNT_VARIABLE));
+            m_aNodeStack.push_front(o3tl::make_unique<SmTextNode>(m_aCurToken, FNT_VARIABLE));
             NextToken();
             break;

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list