connectivity/source/drivers/dbase/dindexnode.cxx | 21 ++++++++++----- solenv/gbuild/UnoApiTarget.mk | 32 +++++++++++++++++------ sw/source/ui/uno/unotxdoc.cxx | 3 ++ 3 files changed, 42 insertions(+), 14 deletions(-)
New commits: commit 5a25394f397634d1f11df28171727a578354e56c Author: Michael Stahl <mst...@redhat.com> Date: Sat Jan 14 21:01:10 2012 +0100 gbuild: UnoApiTarget: fix dependencies This should fix the bug, probably introduced with the per-directory performance enhancements, that after a change to an IDL file 2 builds are required to rebuild everything. (cherry picked from commit 26450b3136979db86577591ef380040972d111fc) diff --git a/solenv/gbuild/UnoApiTarget.mk b/solenv/gbuild/UnoApiTarget.mk index e5415df..e557577 100644 --- a/solenv/gbuild/UnoApiTarget.mk +++ b/solenv/gbuild/UnoApiTarget.mk @@ -76,8 +76,10 @@ endef # for interfaces, exceptions, structs, enums, constant groups define gb_UnoApiTarget_add_idlfile -$(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) -$(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) : $(call gb_UnoApiPartTarget_get_target,$(2)/idl.done) +$(call gb_UnoApiTarget_get_target,$(1)) : \ + $(call gb_UnoApiPartTarget_get_target,$(2)/idl.done) +$(call gb_UnoApiPartTarget_get_target,$(2)/idl.done) : \ + $(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) gb_UnoApiTarget_HPPFILES_$(1) += $(2)/$(3).hdl gb_UnoApiTarget_HPPFILES_$(1) += $(2)/$(3).hpp gb_UnoApiTarget_IDLFILES_$(1) += $(2)/$(3).idl @@ -97,8 +99,10 @@ endef # for old-style services and modules define gb_UnoApiTarget_add_idlfile_noheader -$(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) -$(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) : $(call gb_UnoApiPartTarget_get_target,$(2)/idl_noheader.done) +$(call gb_UnoApiTarget_get_target,$(1)) : \ + $(call gb_UnoApiPartTarget_get_target,$(2)/idl_noheader.done) +$(call gb_UnoApiPartTarget_get_target,$(2)/idl_noheader.done) : \ + $(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) gb_UnoApiTarget_IDLFILES_$(1) += $(2)/$(3).idl endef @@ -113,8 +117,10 @@ endef # for new-style services define gb_UnoApiTarget_add_idlfile_nohdl -$(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) -$(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) : $(call gb_UnoApiPartTarget_get_target,$(2)/idl_nohdl.done) +$(call gb_UnoApiTarget_get_target,$(1)) : \ + $(call gb_UnoApiPartTarget_get_target,$(2)/idl_nohdl.done) +$(call gb_UnoApiPartTarget_get_target,$(2)/idl_nohdl.done) : \ + $(call gb_UnoApiPartTarget_get_target,$(2)/$(3).urd) gb_UnoApiTarget_HPPFILES_$(1) += $(2)/$(3).hpp gb_UnoApiTarget_IDLFILES_$(1) += $(2)/$(3).idl @@ -170,11 +176,23 @@ $(call gb_UnoApiTarget_get_clean_target,%) : -rm -rf $(call gb_UnoApiTarget_get_header_target,$*)\ $(call gb_UnoApiPartTarget_get_target,$*) +# The .urd files are actually created by the gb_UnoApiPartTarget__command, +# invoked for the per-directory .done files. +# The reason why .urd files are tracked is so new files that are added are +# picked up and cause a rebuild, even if older than the .done file (also, as a +# convenience for users who delete them from the workdir by hand; this dummy +# rule plus the dependency from the .done target to the .urd file plus the +# sort/patsubst call in gb_UnoApiPartTarget__command cause command to be +# invoked with the .idl file corresponding to the .urd in that case. +$(call gb_UnoApiPartTarget_get_target,%.urd) : + @true + define gb_UnoApiPartTarget__command $$(call gb_Output_announce,$(2),$(true),IDL,2) mkdir -p $(call gb_UnoApiPartTarget_get_target,$(2)) && \ RESPONSEFILE=$$(call var2file,$$(shell $(gb_MKTEMP)),500,\ - $$(call gb_Helper_convert_native,$$(INCLUDE) $$(DEFS) -O $(call gb_UnoApiPartTarget_get_target,$(2)) -verbose -C $$?)) && \ + $$(call gb_Helper_convert_native,$$(INCLUDE) $$(DEFS) -O $(call gb_UnoApiPartTarget_get_target,$(2)) -verbose -C \ + $$(sort $$(patsubst $$(call gb_UnoApiPartTarget_get_target,%.urd),$(SRCDIR)/%.idl,$$?)))) && \ $(gb_UnoApiTarget_IDLCCOMMAND) @$$$${RESPONSEFILE} > /dev/null && \ rm -f $$$${RESPONSEFILE} && \ touch $$@ commit 4c4ea76c78ceb0003d7049e1c6eb81c6999eba44 Author: Michael Stahl <mst...@redhat.com> Date: Sat Jan 14 20:59:35 2012 +0100 connectivity: dbase: global variable cleanup (cherry picked from commit 88cceffc271e747be830675d62d24b6749a417f5) diff --git a/connectivity/source/drivers/dbase/dindexnode.cxx b/connectivity/source/drivers/dbase/dindexnode.cxx index 0b67e1d..f4e5277 100644 --- a/connectivity/source/drivers/dbase/dindexnode.cxx +++ b/connectivity/source/drivers/dbase/dindexnode.cxx @@ -34,6 +34,7 @@ #include "diagnose_ex.h" #include <algorithm> +#include <boost/scoped_array.hpp> using namespace connectivity; @@ -683,8 +684,6 @@ void ONDXNode::Read(SvStream &rStream, ODbaseIndex& rIndex) rStream >> aChild; } -char aData[128]; - //------------------------------------------------------------------ void ONDXNode::Write(SvStream &rStream, const ONDXPage& rPage) const { @@ -696,24 +695,32 @@ void ONDXNode::Write(SvStream &rStream, const ONDXPage& rPage) const if (rIndex.getHeader().db_keytype) // double { + if (sizeof(double) != rIndex.getHeader().db_keylen) + { + OSL_TRACE("this key length cannot possibly be right?"); + } if (aKey.getValue().isNull()) { - memset(aData,0,rIndex.getHeader().db_keylen); - rStream.Write((sal_uInt8*)aData,rIndex.getHeader().db_keylen); + sal_uInt8 buf[sizeof(double)]; + memset(&buf[0], 0, sizeof(double)); + rStream.Write(&buf[0], sizeof(double)); } else rStream << (double) aKey.getValue(); } else { - memset(aData,0x20,rIndex.getHeader().db_keylen); + sal_uInt16 const nLen(rIndex.getHeader().db_keylen); + ::boost::scoped_array<sal_uInt8> pBuf(new sal_uInt8[nLen]); + memset(&pBuf[0], 0x20, nLen); if (!aKey.getValue().isNull()) { ::rtl::OUString sValue = aKey.getValue(); rtl::OString aText(rtl::OUStringToOString(sValue, rIndex.m_pTable->getConnection()->getTextEncoding())); - strncpy(aData, aText.getStr(), std::min<size_t>(rIndex.getHeader().db_keylen, aText.getLength())); + strncpy(reinterpret_cast<char *>(&pBuf[0]), aText.getStr(), + std::min<size_t>(nLen, aText.getLength())); } - rStream.Write((sal_uInt8*)aData,rIndex.getHeader().db_keylen); + rStream.Write(&pBuf[0], nLen); } rStream << aChild; } commit 1ee02e390548267aa6eb5fdb06ea247c60a327d0 Author: Michael Stahl <mst...@redhat.com> Date: Fri Jan 13 23:54:07 2012 +0100 SwXTextDocument: add some SolarMutexGuards (cherry picked from commit ff2df7b7b61b557db6540ec7d3b38189677ac7f3) diff --git a/sw/source/ui/uno/unotxdoc.cxx b/sw/source/ui/uno/unotxdoc.cxx index 120cb6d..8711d4e 100644 --- a/sw/source/ui/uno/unotxdoc.cxx +++ b/sw/source/ui/uno/unotxdoc.cxx @@ -569,6 +569,7 @@ void SwXTextDocument::dispose(void) throw( RuntimeException ) void SwXTextDocument::close( sal_Bool bDeliverOwnership ) throw( util::CloseVetoException, RuntimeException ) { + SolarMutexGuard aGuard; if(IsValid() && m_pHiddenViewFrame) lcl_DisposeView( m_pHiddenViewFrame, pDocShell); SfxBaseModel::close(bDeliverOwnership); @@ -3023,6 +3024,7 @@ void SAL_CALL SwXTextDocument::render( Reference<XNameContainer> SAL_CALL SwXTextDocument::getXForms() throw( RuntimeException ) { + SolarMutexGuard aGuard; if ( !pDocShell ) throw DisposedException( ::rtl::OUString(), static_cast< XTextDocument* >( this ) ); SwDoc* pDoc = pDocShell->GetDoc(); @@ -3032,6 +3034,7 @@ Reference<XNameContainer> SAL_CALL SwXTextDocument::getXForms() uno::Reference< text::XFlatParagraphIterator > SAL_CALL SwXTextDocument::getFlatParagraphIterator(::sal_Int32 nTextMarkupType, sal_Bool bAutomatic) throw ( uno::RuntimeException ) { + SolarMutexGuard aGuard; return new SwXFlatParagraphIterator( *pDocShell->GetDoc(), nTextMarkupType, bAutomatic ); } _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits