[Libreoffice-commits] .: 114 commits - basic/source desktop/os2 desktop/prj desktop/source desktop/util desktop/win32 drawinglayer/source editeng/inc editeng/source framework/inc framework/qa framework/source officecfg/registry scripting/java sfx2/inc sfx2/qa sfx2/source svx/source sysui/desktop sysui/prj sysui/source ucb/source xmlhelp/source xmloff/source

Jan Holesovsky kendy at kemper.freedesktop.org
Wed Mar 23 09:25:48 PDT 2011


 basic/source/app/app.cxx                                                                        |    9 
 basic/source/app/app.hxx                                                                        |    1 
 basic/source/app/appwin.cxx                                                                     |    8 
 basic/source/basmgr/basmgr.cxx                                                                  |    2 
 basic/source/classes/sbxmod.cxx                                                                 |    5 
 basic/source/inc/sbdiagnose.hxx                                                                 |   34 
 basic/source/runtime/dllmgr-x86.cxx                                                             |   17 
 basic/source/runtime/makefile.mk                                                                |    3 
 basic/source/runtime/rtlproto.hxx                                                               |    1 
 basic/source/runtime/sbdiagnose.cxx                                                             |  134 +++
 basic/source/runtime/stdobj.cxx                                                                 |    2 
 desktop/os2/source/applauncher/makefile.mk                                                      |    6 
 desktop/os2/source/applauncher/os2quickstart.cxx                                                |    6 
 desktop/os2/source/applauncher/quickstart.cxx                                                   |    6 
 desktop/prj/build.lst                                                                           |    5 
 desktop/prj/d.lst                                                                               |    7 
 desktop/source/app/app.cxx                                                                      |   10 
 desktop/source/deployment/manager/dp_manager.cxx                                                |   22 
 desktop/source/deployment/registry/dp_backend.cxx                                               |   54 -
 desktop/source/deployment/registry/dp_backenddb.cxx                                             |    5 
 desktop/util/ooverinfo.rc                                                                       |    2 
 desktop/util/ooverinfo2.rc                                                                      |    2 
 desktop/util/verinfo.rc                                                                         |    4 
 desktop/win32/source/QuickStart/OOQuickStart.rc                                                 |  130 +++
 desktop/win32/source/QuickStart/QuickStart.cpp                                                  |  426 ++++++++++
 desktop/win32/source/QuickStart/QuickStart.h                                                    |   15 
 desktop/win32/source/QuickStart/StdAfx.h                                                        |   42 
 desktop/win32/source/QuickStart/makefile.mk                                                     |   74 +
 desktop/win32/source/QuickStart/resource.h                                                      |   35 
 desktop/win32/source/QuickStart/so/QuickStart.rc                                                |  130 +++
 desktop/win32/source/QuickStart/so/makefile.mk                                                  |   77 +
 desktop/win32/source/applauncher/makefile.mk                                                    |    4 
 desktop/win32/source/guiloader/makefile.mk                                                      |    4 
 dev/null                                                                                        |binary
 drawinglayer/source/attribute/fontattribute.cxx                                                 |    6 
 editeng/inc/editeng/fontitem.hxx                                                                |   23 
 editeng/inc/editeng/svxacorr.hxx                                                                |    1 
 editeng/source/editeng/editobj.cxx                                                              |    4 
 editeng/source/editeng/edtspell.cxx                                                             |    7 
 editeng/source/editeng/edtspell.hxx                                                             |    1 
 editeng/source/editeng/impedit4.cxx                                                             |   10 
 editeng/source/editeng/textconv.cxx                                                             |   10 
 editeng/source/items/numitem.cxx                                                                |    2 
 editeng/source/items/textitem.cxx                                                               |   20 
 editeng/source/misc/svxacorr.cxx                                                                |   43 -
 editeng/source/uno/unofdesc.cxx                                                                 |   10 
 framework/inc/services/substitutepathvars.hxx                                                   |  221 ++---
 framework/qa/complex/path_substitution/PathSubstitutionTest.java                                |   24 
 framework/qa/unoapi/makefile.mk                                                                 |   48 +
 framework/source/services/backingwindow.cxx                                                     |   57 -
 framework/source/services/substitutepathvars.cxx                                                |  399 ++++-----
 officecfg/registry/data/org/openoffice/Office/Canvas.xcu                                        |    2 
 scripting/java/com/sun/star/script/framework/provider/SwingInvocation.java                      |   44 +
 scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java   |   44 -
 scripting/java/com/sun/star/script/framework/provider/javascript/ScriptEditorForJavaScript.java |   77 -
 sfx2/inc/sfx2/module.hxx                                                                        |   12 
 sfx2/qa/unoapi/makefile.mk                                                                      |   48 +
 sfx2/source/appl/module.cxx                                                                     |   34 
 sfx2/source/doc/SfxDocumentMetaData.cxx                                                         |   44 -
 sfx2/source/doc/objxtor.cxx                                                                     |    5 
 sfx2/source/view/viewprn.cxx                                                                    |   83 +
 svx/source/form/fmundo.cxx                                                                      |   80 -
 svx/source/mnuctrls/fntctl.cxx                                                                  |    2 
 svx/source/stbctrls/pszctrl.cxx                                                                 |    2 
 svx/source/svdraw/svdibrow.cxx                                                                  |    6 
 svx/source/svdraw/svdmodel.cxx                                                                  |   40 
 svx/source/tbxctrls/itemwin.cxx                                                                 |    4 
 sysui/desktop/icons/makefile.mk                                                                 |   63 -
 sysui/prj/build.lst                                                                             |    6 
 sysui/prj/d.lst                                                                                 |    4 
 sysui/source/win32/QuickStart/OOQuickStart.rc                                                   |  130 ---
 sysui/source/win32/QuickStart/QuickStart.cpp                                                    |  426 ----------
 sysui/source/win32/QuickStart/QuickStart.h                                                      |   15 
 sysui/source/win32/QuickStart/StdAfx.h                                                          |   42 
 sysui/source/win32/QuickStart/makefile.mk                                                       |   74 -
 sysui/source/win32/QuickStart/resource.h                                                        |   35 
 sysui/source/win32/QuickStart/so/QuickStart.rc                                                  |  130 ---
 sysui/source/win32/QuickStart/so/makefile.mk                                                    |   73 -
 ucb/source/ucp/tdoc/tdoc_docmgr.cxx                                                             |   20 
 xmlhelp/source/com/sun/star/help/HelpIndexer.java                                               |    8 
 xmlhelp/source/cxxhelp/provider/databases.cxx                                                   |   44 -
 xmlhelp/source/cxxhelp/provider/databases.hxx                                                   |    2 
 xmlhelp/source/cxxhelp/provider/db.cxx                                                          |   25 
 xmlhelp/source/cxxhelp/provider/db.hxx                                                          |   19 
 xmloff/source/chart/SchXMLExport.cxx                                                            |  143 ++-
 xmloff/source/chart/SchXMLSeries2Context.cxx                                                    |    9 
 xmloff/source/chart/SchXMLTools.cxx                                                             |    2 
 xmloff/source/core/xmlexp.cxx                                                                   |    9 
 xmloff/source/draw/shapeexport.cxx                                                              |    2 
 xmloff/source/style/xmlnume.cxx                                                                 |   24 
 xmloff/source/style/xmlnumi.cxx                                                                 |   16 
 xmloff/source/text/XMLAutoTextEventExport.cxx                                                   |    3 
 xmloff/source/text/txtprhdl.cxx                                                                 |    3 
 xmloff/source/transform/PropertyActionsOOo.cxx                                                  |    2 
 94 files changed, 2289 insertions(+), 1735 deletions(-)

New commits:
commit 498887fd01f7793842430464508f39352b76d452
Merge: d4e8871... a16869e...
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Wed Mar 23 17:13:39 2011 +0100

    Merge branch 'master' of git://anongit.freedesktop.org/libreoffice/libs-core

commit d4e88719d67c5cadb55c85cd372d412fd969c613
Merge: dab1b52... d46e1d3...
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Wed Mar 23 16:59:26 2011 +0100

    Merge commit 'ooo/DEV300_m103'
    
    Conflicts:
    	basic/source/runtime/makefile.mk
    	basic/source/runtime/step2.cxx
    	desktop/prj/build.lst
    	desktop/source/app/app.cxx
    	desktop/source/deployment/registry/dp_backend.cxx
    	drawinglayer/source/attribute/fontattribute.cxx
    	editeng/inc/editeng/fontitem.hxx
    	editeng/source/editeng/edtspell.cxx
    	editeng/source/misc/svxacorr.cxx
    	framework/inc/services/substitutepathvars.hxx
    	framework/source/services/substitutepathvars.cxx
    	sfx2/qa/cppunit/makefile.mk
    	sfx2/source/doc/SfxDocumentMetaData.cxx
    	sfx2/source/doc/objxtor.cxx
    	svx/source/dialog/svxruler.cxx
    	sysui/desktop/icons/so9_base_app.ico
    	sysui/desktop/icons/so9_calc_app.ico
    	sysui/desktop/icons/so9_draw_app.ico
    	sysui/desktop/icons/so9_impress_app.ico
    	sysui/desktop/icons/so9_main_app.ico
    	sysui/desktop/icons/so9_math_app.ico
    	sysui/desktop/icons/so9_writer_app.ico
    	xmlhelp/source/cxxhelp/provider/databases.cxx
    	xmlhelp/source/cxxhelp/provider/db.cxx
    	xmlhelp/source/cxxhelp/provider/db.hxx

diff --cc basic/source/app/app.cxx
index c5f6886,b829554..70dc125
mode 100755,100644..100755
--- a/basic/source/app/app.cxx
+++ b/basic/source/app/app.cxx
diff --cc basic/source/app/app.hxx
index 578da58,0a39613..c178219
mode 100755,100644..100755
--- a/basic/source/app/app.hxx
+++ b/basic/source/app/app.hxx
diff --cc basic/source/app/appwin.cxx
index d7f8b7e,de33e59..84633c6
mode 100755,100644..100755
--- a/basic/source/app/appwin.cxx
+++ b/basic/source/app/appwin.cxx
diff --cc basic/source/basmgr/basmgr.cxx
index 8d85cbb,6cd916b..d1dd357
mode 100755,100644..100755
--- a/basic/source/basmgr/basmgr.cxx
+++ b/basic/source/basmgr/basmgr.cxx
diff --cc basic/source/classes/sbxmod.cxx
index c61919f,bb91814..15c6989
mode 100755,100644..100644
--- a/basic/source/classes/sbxmod.cxx
+++ b/basic/source/classes/sbxmod.cxx
diff --cc basic/source/runtime/dllmgr-x86.cxx
index b2f48bd,0000000..1a417e9
mode 100755,000000..100755
--- a/basic/source/runtime/dllmgr-x86.cxx
+++ b/basic/source/runtime/dllmgr-x86.cxx
@@@ -1,723 -1,0 +1,730 @@@
 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 +/*************************************************************************
 + *
 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 + *
 + * Copyright 2000, 2010 Oracle and/or its affiliates.
 + *
 + * OpenOffice.org - a multi-platform office productivity suite
 + *
 + * This file is part of OpenOffice.org.
 + *
 + * OpenOffice.org is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU Lesser General Public License version 3
 + * only, as published by the Free Software Foundation.
 + *
 + * OpenOffice.org is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU Lesser General Public License version 3 for more details
 + * (a copy is included in the LICENSE file that accompanied this code).
 + *
 + * You should have received a copy of the GNU Lesser General Public License
 + * version 3 along with OpenOffice.org.  If not, see
 + * <http://www.openoffice.org/license.html>
 + * for a copy of the LGPLv3 License.
 + *
 + ************************************************************************/
 +
 +#include "precompiled_basic.hxx"
 +#include "sal/config.h"
 +
 +#include <algorithm>
 +#include <cstddef>
 +#include <list>
 +#include <map>
 +#include <vector>
 +
 +#include "basic/sbx.hxx"
 +#include "basic/sbxvar.hxx"
++#include "runtime.hxx"
 +#include "osl/thread.h"
 +#include "rtl/ref.hxx"
 +#include "rtl/string.hxx"
 +#include "rtl/ustring.hxx"
 +#include "salhelper/simplereferenceobject.hxx"
 +#include "tools/svwin.h"
 +
 +#undef max
 +
 +#include "dllmgr.hxx"
 +
 +/* Open issues:
 +
 +   Missing support for functions returning structs (see TODO in call()).
 +
 +   Missing support for additional data types (64 bit integers, Any, ...; would
 +   trigger OSL_ASSERT(false) in various switches).
 +
 +   It is assumed that the variables passed into SbiDllMgr::Call to represent
 +   the arguments and return value have types that exactly match the Declare
 +   statement; it would be better if this code had access to the function
 +   signature from the Declare statement, so that it could convert the passed
 +   variables accordingly.
 +*/
 +
 +extern "C" {
 +
 +int __stdcall DllMgr_call32(FARPROC, void const * stack, std::size_t size);
 +double __stdcall DllMgr_callFp(FARPROC, void const * stack, std::size_t size);
 +
 +}
 +
 +namespace {
 +
 +char * address(std::vector< char > & blob) {
 +    return blob.empty() ? 0 : &blob[0];
 +}
 +
 +SbError convert(rtl::OUString const & source, rtl::OString * target) {
 +    return
 +        source.convertToString(
 +            target, osl_getThreadTextEncoding(),
 +            (RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR |
 +             RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR))
 +        ? ERRCODE_NONE : ERRCODE_BASIC_BAD_ARGUMENT;
 +        //TODO: more specific errcode?
 +}
 +
 +SbError convert(char const * source, sal_Int32 length, rtl::OUString * target) {
 +    return
 +        rtl_convertStringToUString(
 +            &target->pData, source, length, osl_getThreadTextEncoding(),
 +            (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR |
 +             RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR |
 +             RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR))
 +        ? ERRCODE_NONE : ERRCODE_BASIC_BAD_ARGUMENT;
 +        //TODO: more specific errcode?
 +}
 +
 +struct UnmarshalData {
 +    UnmarshalData(SbxVariable * theVariable, void * theBuffer):
 +        variable(theVariable), buffer(theBuffer) {}
 +
 +    SbxVariable * variable;
 +    void * buffer;
 +};
 +
 +struct StringData: public UnmarshalData {
 +    StringData(SbxVariable * theVariable, void * theBuffer, bool theSpecial):
 +        UnmarshalData(theVariable, theBuffer), special(theSpecial) {}
 +
 +    bool special;
 +};
 +
 +class MarshalData: private boost::noncopyable {
 +public:
 +    std::vector< char > * newBlob() {
 +        blobs_.push_front(std::vector< char >());
 +        return &blobs_.front();
 +    }
 +
 +    std::vector< UnmarshalData > unmarshal;
 +
 +    std::vector< StringData > unmarshalStrings;
 +
 +private:
 +    std::list< std::vector< char > > blobs_;
 +};
 +
 +std::size_t align(std::size_t address, std::size_t alignment) {
 +    // alignment = 2^k for some k >= 0
 +    return (address + (alignment - 1)) & ~(alignment - 1);
 +}
 +
 +char * align(
 +    std::vector< char > & blob, std::size_t alignment, std::size_t offset,
 +    std::size_t add)
 +{
 +    std::vector< char >::size_type n = blob.size();
 +    n = align(n - offset, alignment) + offset; //TODO: overflow in align()
 +    blob.resize(n + add); //TODO: overflow
 +    return address(blob) + n;
 +}
 +
 +template< typename T > void add(
 +    std::vector< char > & blob, T const & data, std::size_t alignment,
 +    std::size_t offset)
 +{
 +    *reinterpret_cast< T * >(align(blob, alignment, offset, sizeof (T))) = data;
 +}
 +
 +std::size_t alignment(SbxVariable * variable) {
 +    OSL_ASSERT(variable != 0);
 +    if ((variable->GetType() & SbxARRAY) == 0) {
 +        switch (variable->GetType()) {
 +        case SbxINTEGER:
 +            return 2;
 +        case SbxLONG:
 +        case SbxSINGLE:
 +        case SbxSTRING:
 +            return 4;
 +        case SbxDOUBLE:
 +            return 8;
 +        case SbxOBJECT:
 +            {
 +                std::size_t n = 1;
 +                SbxArray * props = PTR_CAST(SbxObject, variable->GetObject())->
 +                    GetProperties();
 +                for (sal_uInt16 i = 0; i < props->Count(); ++i) {
 +                    n = std::max(n, alignment(props->Get(i)));
 +                }
 +                return n;
 +            }
 +        case SbxBOOL:
 +        case SbxBYTE:
 +            return 1;
 +        default:
 +            OSL_ASSERT(false);
 +            return 1;
 +        }
 +    } else {
 +        SbxDimArray * arr = PTR_CAST(SbxDimArray, variable->GetObject());
 +        int dims = arr->GetDims();
 +        std::vector< sal_Int32 > low(dims);
 +        for (int i = 0; i < dims; ++i) {
 +            sal_Int32 up;
 +            arr->GetDim32(i + 1, low[i], up);
 +        }
 +        return alignment(arr->Get32(&low[0]));
 +    }
 +}
 +
 +SbError marshal(
 +    bool outer, SbxVariable * variable, bool special,
 +    std::vector< char > & blob, std::size_t offset, MarshalData & data);
 +
 +SbError marshalString(
 +    SbxVariable * variable, bool special, MarshalData & data, void ** buffer)
 +{
 +    OSL_ASSERT(variable != 0 && buffer != 0);
 +    rtl::OString str;
 +    SbError e = convert(variable->GetString(), &str);
 +    if (e != ERRCODE_NONE) {
 +        return e;
 +    }
 +    std::vector< char > * blob = data.newBlob();
 +    blob->insert(
 +        blob->begin(), str.getStr(), str.getStr() + str.getLength() + 1);
 +    *buffer = address(*blob);
 +    data.unmarshalStrings.push_back(StringData(variable, *buffer, special));
 +    return ERRCODE_NONE;
 +}
 +
 +SbError marshalStruct(
 +    SbxVariable * variable, std::vector< char > & blob, std::size_t offset,
 +    MarshalData & data)
 +{
 +    OSL_ASSERT(variable != 0);
 +    SbxArray * props = PTR_CAST(SbxObject, variable->GetObject())->
 +        GetProperties();
 +    for (sal_uInt16 i = 0; i < props->Count(); ++i) {
 +        SbError e = marshal(false, props->Get(i), false, blob, offset, data);
 +        if (e != ERRCODE_NONE) {
 +            return e;
 +        }
 +    }
 +    return ERRCODE_NONE;
 +}
 +
 +SbError marshalArray(
 +    SbxVariable * variable, std::vector< char > & blob, std::size_t offset,
 +    MarshalData & data)
 +{
 +    OSL_ASSERT(variable != 0);
 +    SbxDimArray * arr = PTR_CAST(SbxDimArray, variable->GetObject());
 +    int dims = arr->GetDims();
 +    std::vector< sal_Int32 > low(dims);
 +    std::vector< sal_Int32 > up(dims);
 +    for (int i = 0; i < dims; ++i) {
 +        arr->GetDim32(i + 1, low[i], up[i]);
 +    }
 +    for (std::vector< sal_Int32 > idx = low;;) {
 +        SbError e = marshal(
 +            false, arr->Get32(&idx[0]), false, blob, offset, data);
 +        if (e != ERRCODE_NONE) {
 +            return e;
 +        }
 +        int i = dims - 1;
 +        while (idx[i] == up[i]) {
 +            idx[i] = low[i];
 +            if (i == 0) {
 +                return ERRCODE_NONE;
 +            }
 +            --i;
 +        }
 +        ++idx[i];
 +    }
 +}
 +
 +// 8-aligned structs are only 4-aligned on stack, so alignment of members in
 +// such structs must take that into account via "offset"
 +SbError marshal(
 +    bool outer, SbxVariable * variable, bool special,
 +    std::vector< char > & blob, std::size_t offset, MarshalData & data)
 +{
 +    OSL_ASSERT(variable != 0);
-     if ((variable->GetFlags() & SBX_REFERENCE) == 0) {
-         if ((variable->GetType() & SbxARRAY) == 0) {
-             switch (variable->GetType()) {
++
++    SbxDataType eVarType = variable->GetType();
++    bool bByVal = (variable->GetFlags() & SBX_REFERENCE) == 0;
++    if( !bByVal && !SbiRuntime::isVBAEnabled() && eVarType == SbxSTRING )
++        bByVal = true;
++
++    if (bByVal) {
++        if ((eVarType & SbxARRAY) == 0) {
++            switch (eVarType) {
 +            case SbxINTEGER:
 +                add(blob, variable->GetInteger(), outer ? 4 : 2, offset);
 +                break;
 +            case SbxLONG:
 +                add(blob, variable->GetLong(), 4, offset);
 +                break;
 +            case SbxSINGLE:
 +                add(blob, variable->GetSingle(), 4, offset);
 +                break;
 +            case SbxDOUBLE:
 +                add(blob, variable->GetDouble(), outer ? 4 : 8, offset);
 +                break;
 +            case SbxSTRING:
 +                {
 +                    void * p;
 +                    SbError e = marshalString(variable, special, data, &p);
 +                    if (e != ERRCODE_NONE) {
 +                        return e;
 +                    }
 +                    add(blob, p, 4, offset);
 +                    break;
 +                }
 +            case SbxOBJECT:
 +                {
 +                    align(blob, outer ? 4 : alignment(variable), offset, 0);
 +                    SbError e = marshalStruct(variable, blob, offset, data);
 +                    if (e != ERRCODE_NONE) {
 +                        return e;
 +                    }
 +                    break;
 +                }
 +            case SbxBOOL:
 +                add(blob, variable->GetBool(), outer ? 4 : 1, offset);
 +                break;
 +            case SbxBYTE:
 +                add(blob, variable->GetByte(), outer ? 4 : 1, offset);
 +                break;
 +            default:
 +                OSL_ASSERT(false);
 +                break;
 +            }
 +        } else {
 +            SbError e = marshalArray(variable, blob, offset, data);
 +            if (e != ERRCODE_NONE) {
 +                return e;
 +            }
 +        }
 +    } else {
-         if ((variable->GetType() & SbxARRAY) == 0) {
-             switch (variable->GetType()) {
++        if ((eVarType & SbxARRAY) == 0) {
++            switch (eVarType) {
 +            case SbxINTEGER:
 +            case SbxLONG:
 +            case SbxSINGLE:
 +            case SbxDOUBLE:
 +            case SbxBOOL:
 +            case SbxBYTE:
 +                add(blob, variable->data(), 4, offset);
 +                break;
 +            case SbxSTRING:
 +                {
 +                    std::vector< char > * blob2 = data.newBlob();
 +                    void * p;
 +                    SbError e = marshalString(variable, special, data, &p);
 +                    if (e != ERRCODE_NONE) {
 +                        return e;
 +                    }
 +                    add(*blob2, p, 4, 0);
 +                    add(blob, address(*blob2), 4, offset);
 +                    break;
 +                }
 +            case SbxOBJECT:
 +                {
 +                    std::vector< char > * blob2 = data.newBlob();
 +                    SbError e = marshalStruct(variable, *blob2, 0, data);
 +                    if (e != ERRCODE_NONE) {
 +                        return e;
 +                    }
 +                    void * p = address(*blob2);
 +                    if (outer) {
 +                        data.unmarshal.push_back(UnmarshalData(variable, p));
 +                    }
 +                    add(blob, p, 4, offset);
 +                    break;
 +                }
 +            default:
 +                OSL_ASSERT(false);
 +                break;
 +            }
 +        } else {
 +            std::vector< char > * blob2 = data.newBlob();
 +            SbError e = marshalArray(variable, *blob2, 0, data);
 +            if (e != ERRCODE_NONE) {
 +                return e;
 +            }
 +            void * p = address(*blob2);
 +            if (outer) {
 +                data.unmarshal.push_back(UnmarshalData(variable, p));
 +            }
 +            add(blob, p, 4, offset);
 +        }
 +    }
 +    return ERRCODE_NONE;
 +}
 +
 +template< typename T > T read(void const ** pointer) {
 +    T const * p = static_cast< T const * >(*pointer);
 +    *pointer = static_cast< void const * >(p + 1);
 +    return *p;
 +}
 +
 +void const * unmarshal(SbxVariable * variable, void const * data) {
 +    OSL_ASSERT(variable != 0);
 +    if ((variable->GetType() & SbxARRAY) == 0) {
 +        switch (variable->GetType()) {
 +        case SbxINTEGER:
 +            variable->PutInteger(read< sal_Int16 >(&data));
 +            break;
 +        case SbxLONG:
 +            variable->PutLong(read< sal_Int32 >(&data));
 +            break;
 +        case SbxSINGLE:
 +            variable->PutSingle(read< float >(&data));
 +            break;
 +        case SbxDOUBLE:
 +            variable->PutDouble(read< double >(&data));
 +            break;
 +        case SbxSTRING:
 +            read< char * >(&data); // handled by unmarshalString
 +            break;
 +        case SbxOBJECT:
 +            {
 +                data = reinterpret_cast< void const * >(
 +                    align(
 +                        reinterpret_cast< sal_uIntPtr >(data),
 +                        alignment(variable)));
 +                SbxArray * props = PTR_CAST(SbxObject, variable->GetObject())->
 +                    GetProperties();
 +                for (sal_uInt16 i = 0; i < props->Count(); ++i) {
 +                    data = unmarshal(props->Get(i), data);
 +                }
 +                break;
 +            }
 +        case SbxBOOL:
 +            variable->PutBool(read< sal_Bool >(&data));
 +            break;
 +        case SbxBYTE:
 +            variable->PutByte(read< sal_uInt8 >(&data));
 +            break;
 +        default:
 +            OSL_ASSERT(false);
 +            break;
 +        }
 +    } else {
 +        SbxDimArray * arr = PTR_CAST(SbxDimArray, variable->GetObject());
 +        int dims = arr->GetDims();
 +        std::vector< sal_Int32 > low(dims);
 +        std::vector< sal_Int32 > up(dims);
 +        for (int i = 0; i < dims; ++i) {
 +            arr->GetDim32(i + 1, low[i], up[i]);
 +        }
 +        for (std::vector< sal_Int32 > idx = low;;) {
 +            data = unmarshal(arr->Get32(&idx[0]), data);
 +            int i = dims - 1;
 +            while (idx[i] == up[i]) {
 +                idx[i] = low[i];
 +                if (i == 0) {
 +                    goto done;
 +                }
 +                --i;
 +            }
 +            ++idx[i];
 +        }
 +    done:;
 +    }
 +    return data;
 +}
 +
 +SbError unmarshalString(StringData const & data, SbxVariable & result) {
 +    rtl::OUString str;
 +    if (data.buffer != 0) {
 +        char const * p = static_cast< char const * >(data.buffer);
 +        sal_Int32 len;
 +        if (data.special) {
 +            len = static_cast< sal_Int32 >(result.GetULong());
 +            if (len < 0) { // i.e., DWORD result >= 2^31
 +                return ERRCODE_BASIC_BAD_ARGUMENT;
 +                    //TODO: more specific errcode?
 +            }
 +        } else {
 +            len = rtl_str_getLength(p);
 +        }
 +        SbError e = convert(p, len, &str);
 +        if (e != ERRCODE_NONE) {
 +            return e;
 +        }
 +    }
 +    data.variable->PutString(String(str));
 +    return ERRCODE_NONE;
 +}
 +
 +struct ProcData {
 +    rtl::OString name;
 +    FARPROC proc;
 +};
 +
 +SbError call(
 +    rtl::OUString const & dll, ProcData const & proc, SbxArray * arguments,
 +    SbxVariable & result)
 +{
 +    std::vector< char > stack;
 +    MarshalData data;
 +    // For DWORD GetLogicalDriveStringsA(DWORD nBufferLength, LPSTR lpBuffer)
 +    // from kernel32, upon return, filled lpBuffer length is result DWORD, which
 +    // requires special handling in unmarshalString; other functions might
 +    // require similar treatment, too:
 +    bool special =
 +        dll.equalsIgnoreAsciiCaseAsciiL(
 +            RTL_CONSTASCII_STRINGPARAM("KERNEL32.DLL")) &&
 +        (proc.name ==
 +         rtl::OString(RTL_CONSTASCII_STRINGPARAM("GetLogicalDriveStringsA")));
 +    for (sal_uInt16 i = 1; i < (arguments == 0 ? 0 : arguments->Count()); ++i) {
 +        SbError e = marshal(
 +            true, arguments->Get(i), special && i == 2, stack, stack.size(),
 +            data);
 +        if (e != ERRCODE_NONE) {
 +            return e;
 +        }
 +        align(stack, 4, 0, 0);
 +    }
 +    switch (result.GetType()) {
 +    case SbxEMPTY:
 +        DllMgr_call32(proc.proc, address(stack), stack.size());
 +        break;
 +    case SbxINTEGER:
 +        result.PutInteger(
 +            static_cast< sal_Int16 >(
 +                DllMgr_call32(proc.proc, address(stack), stack.size())));
 +        break;
 +    case SbxLONG:
 +        result.PutLong(
 +            static_cast< sal_Int32 >(
 +                DllMgr_call32(proc.proc, address(stack), stack.size())));
 +        break;
 +    case SbxSINGLE:
 +        result.PutSingle(
 +            static_cast< float >(
 +                DllMgr_callFp(proc.proc, address(stack), stack.size())));
 +        break;
 +    case SbxDOUBLE:
 +        result.PutDouble(
 +            DllMgr_callFp(proc.proc, address(stack), stack.size()));
 +        break;
 +    case SbxSTRING:
 +        {
 +            char const * s1 = reinterpret_cast< char const * >(
 +                DllMgr_call32(proc.proc, address(stack), stack.size()));
 +            rtl::OUString s2;
 +            SbError e = convert(s1, rtl_str_getLength(s1), &s2);
 +            if (e != ERRCODE_NONE) {
 +                return e;
 +            }
 +            result.PutString(String(s2));
 +            break;
 +        }
 +    case SbxOBJECT:
 +        //TODO
 +        DllMgr_call32(proc.proc, address(stack), stack.size());
 +        break;
 +    case SbxBOOL:
 +        result.PutBool(
 +            static_cast< sal_Bool >(
 +                DllMgr_call32(proc.proc, address(stack), stack.size())));
 +        break;
 +    case SbxBYTE:
 +        result.PutByte(
 +            static_cast< sal_uInt8 >(
 +                DllMgr_call32(proc.proc, address(stack), stack.size())));
 +        break;
 +    default:
 +        OSL_ASSERT(false);
 +        break;
 +    }
 +    for (sal_uInt16 i = 1; i < (arguments == 0 ? 0 : arguments->Count()); ++i) {
 +        arguments->Get(i)->ResetFlag(SBX_REFERENCE);
 +            //TODO: skipped for errors?!?
 +    }
 +    for (std::vector< UnmarshalData >::iterator i(data.unmarshal.begin());
 +         i != data.unmarshal.end(); ++i)
 +    {
 +        unmarshal(i->variable, i->buffer);
 +    }
 +    for (std::vector< StringData >::iterator i(data.unmarshalStrings.begin());
 +         i != data.unmarshalStrings.end(); ++i)
 +    {
 +        SbError e = unmarshalString(*i, result);
 +        if (e != ERRCODE_NONE) {
 +            return e;
 +        }
 +    }
 +    return ERRCODE_NONE;
 +}
 +
 +SbError getProcData(HMODULE handle, rtl::OUString const & name, ProcData * proc)
 +{
 +    OSL_ASSERT(proc != 0);
 +    if (name.getLength() != 0 && name[0] == '@') { //TODO: "@" vs. "#"???
 +        sal_Int32 n = name.copy(1).toInt32(); //TODO: handle bad input
 +        if (n <= 0 || n > 0xFFFF) {
 +            return ERRCODE_BASIC_BAD_ARGUMENT; //TODO: more specific errcode?
 +        }
 +        FARPROC p = GetProcAddress(handle, reinterpret_cast< LPCSTR >(n));
 +        if (p != 0) {
 +            proc->name = rtl::OString(RTL_CONSTASCII_STRINGPARAM("#")) +
 +                rtl::OString::valueOf(n);
 +            proc->proc = p;
 +            return ERRCODE_NONE;
 +        }
 +    } else {
 +        rtl::OString name8;
 +        SbError e = convert(name, &name8);
 +        if (e != ERRCODE_NONE) {
 +            return e;
 +        }
 +        FARPROC p = GetProcAddress(handle, name8.getStr());
 +        if (p != 0) {
 +            proc->name = name8;
 +            proc->proc = p;
 +            return ERRCODE_NONE;
 +        }
 +        sal_Int32 i = name8.indexOf('#');
 +        if (i != -1) {
 +            name8 = name8.copy(0, i);
 +            p = GetProcAddress(handle, name8.getStr());
 +            if (p != 0) {
 +                proc->name = name8;
 +                proc->proc = p;
 +                return ERRCODE_NONE;
 +            }
 +        }
 +        rtl::OString real(
 +            rtl::OString(RTL_CONSTASCII_STRINGPARAM("_")) + name8);
 +        p = GetProcAddress(handle, real.getStr());
 +        if (p != 0) {
 +            proc->name = real;
 +            proc->proc = p;
 +            return ERRCODE_NONE;
 +        }
 +        real = name8 + rtl::OString(RTL_CONSTASCII_STRINGPARAM("A"));
 +        p = GetProcAddress(handle, real.getStr());
 +        if (p != 0) {
 +            proc->name = real;
 +            proc->proc = p;
 +            return ERRCODE_NONE;
 +        }
 +    }
 +    return ERRCODE_BASIC_PROC_UNDEFINED;
 +}
 +
 +struct Dll: public salhelper::SimpleReferenceObject {
 +private:
 +    typedef std::map< rtl::OUString, ProcData > Procs;
 +
 +    virtual ~Dll();
 +
 +public:
 +    Dll(): handle(0) {}
 +
 +    SbError getProc(rtl::OUString const & name, ProcData * proc);
 +
 +    HMODULE handle;
 +    Procs procs;
 +};
 +
 +Dll::~Dll() {
 +    if (handle != 0 && !FreeLibrary(handle)) {
 +        OSL_TRACE("FreeLibrary(%p) failed with %u", handle, GetLastError());
 +    }
 +}
 +
 +SbError Dll::getProc(rtl::OUString const & name, ProcData * proc) {
 +    Procs::iterator i(procs.find(name));
 +    if (i != procs.end()) {
 +        *proc = i->second;
 +        return ERRCODE_NONE;
 +    }
 +    SbError e = getProcData(handle, name, proc);
 +    if (e == ERRCODE_NONE) {
 +        procs.insert(Procs::value_type(name, *proc));
 +    }
 +    return e;
 +}
 +
 +rtl::OUString fullDllName(rtl::OUString const & name) {
 +    rtl::OUString full(name);
 +    if (full.indexOf('.') == -1) {
 +        full += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".DLL"));
 +    }
 +    return full;
 +}
 +
 +}
 +
 +struct SbiDllMgr::Impl: private boost::noncopyable {
 +private:
 +    typedef std::map< rtl::OUString, rtl::Reference< Dll > > Dlls;
 +
 +public:
 +    Dll * getDll(rtl::OUString const & name);
 +
 +    Dlls dlls;
 +};
 +
 +Dll * SbiDllMgr::Impl::getDll(rtl::OUString const & name) {
 +    Dlls::iterator i(dlls.find(name));
 +    if (i == dlls.end()) {
 +        i = dlls.insert(Dlls::value_type(name, new Dll)).first;
 +        HMODULE h = LoadLibraryW(reinterpret_cast<LPCWSTR>(name.getStr()));
 +        if (h == 0) {
 +            dlls.erase(i);
 +            return 0;
 +        }
 +        i->second->handle = h;
 +    }
 +    return i->second.get();
 +}
 +
 +SbError SbiDllMgr::Call(
 +    rtl::OUString const & function, rtl::OUString const & library,
 +    SbxArray * arguments, SbxVariable & result, bool cdeclConvention)
 +{
 +    if (cdeclConvention) {
 +        return ERRCODE_BASIC_NOT_IMPLEMENTED;
 +    }
 +    rtl::OUString dllName(fullDllName(library));
 +    Dll * dll = impl_->getDll(dllName);
 +    if (dll == 0) {
 +        return ERRCODE_BASIC_BAD_DLL_LOAD;
 +    }
 +    ProcData proc;
 +    SbError e = dll->getProc(function, &proc);
 +    if (e != ERRCODE_NONE) {
 +        return e;
 +    }
 +    return call(dllName, proc, arguments, result);
 +}
 +
 +void SbiDllMgr::FreeDll(rtl::OUString const & library) {
 +    impl_->dlls.erase(library);
 +}
 +
 +SbiDllMgr::SbiDllMgr(): impl_(new Impl) {}
 +
 +SbiDllMgr::~SbiDllMgr() {}
 +
 +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --cc basic/source/runtime/makefile.mk
index 2996941,329448c..8006642
mode 100755,100644..100755
--- a/basic/source/runtime/makefile.mk
+++ b/basic/source/runtime/makefile.mk
@@@ -51,26 -51,16 +51,27 @@@ SLOFILES=	
      $(SLO)$/stdobj.obj	\
      $(SLO)$/stdobj1.obj	\
      $(SLO)$/methods.obj	\
 -    $(SLO)$/methods1.obj	\
 +    $(SLO)$/methods1.obj\
      $(SLO)$/props.obj	\
-     $(SLO)$/ddectrl.obj
 -    $(SLO)$/ddectrl.obj	\
 -    $(SLO)$/dllmgr.obj \
++    $(SLO)$/ddectrl.obj \
+     $(SLO)$/sbdiagnose.obj
  
 +.IF "$(GUI)$(CPU)" == "WNTI"
 +SLOFILES+= \
 +    $(SLO)$/dllmgr-x86.obj
 +.ELIF "$(GUI)$(CPU)" == "WNTX"
 +SLOFILES+= \
 +    $(SLO)$/dllmgr-x64.obj
 +.ELSE
 +SLOFILES+= \
 +    $(SLO)$/dllmgr-none.obj
 +.ENDIF
  .IF "$(GUI)$(COM)$(CPU)" == "WNTMSCI"
 -SLOFILES+=	$(SLO)$/wnt.obj
 +SLOFILES+= \
 +    $(SLO)$/wnt-x86.obj
  .ELIF "$(GUI)$(COM)$(CPU)" == "WNTGCCI"
 -SLOFILES+=	$(SLO)$/wnt-mingw.obj
 +SLOFILES+= \
 +    $(SLO)$/wnt-mingw.obj
  .ENDIF
  
  # --- Targets -------------------------------------------------------------
diff --cc basic/source/runtime/rtlproto.hxx
index 90d31ff,02a1969..7258a7d
mode 100755,100644..100755
--- a/basic/source/runtime/rtlproto.hxx
+++ b/basic/source/runtime/rtlproto.hxx
diff --cc basic/source/runtime/stdobj.cxx
index 4a41e0b,536becb..589cb89
mode 100755,100644..100755
--- a/basic/source/runtime/stdobj.cxx
+++ b/basic/source/runtime/stdobj.cxx
diff --cc desktop/os2/source/applauncher/makefile.mk
index bf71b57,7eec8ae..7eec8ae
mode 100755,100644..100755
--- a/desktop/os2/source/applauncher/makefile.mk
+++ b/desktop/os2/source/applauncher/makefile.mk
diff --cc desktop/os2/source/applauncher/os2quickstart.cxx
index 0000000,6358543..b673892
mode 000000,100644..100755
--- a/desktop/os2/source/applauncher/os2quickstart.cxx
+++ b/desktop/os2/source/applauncher/os2quickstart.cxx
@@@ -1,0 -1,3 +1,6 @@@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ #include "launcher.hxx"
+ 
+ CHAR APPLICATION_SWITCH[] = ( "-quickstart" );
++
++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --cc desktop/prj/build.lst
index 26e9e04,f1dee07..6899168
mode 100755,100644..100755
--- a/desktop/prj/build.lst
+++ b/desktop/prj/build.lst
@@@ -17,12 -17,13 +17,15 @@@ dt  desktop\win32\source\guistdi
  dt	desktop\win32\source\applauncher		nmake	-	w	dt_applauncher dt_inc NULL
  dt	desktop\win32\source\applauncher\ooo	nmake	-	w	dt_applauncher_ooo dt_applauncher.w dt_inc NULL
  dt	desktop\win32\source\rebase				nmake	-	w	dt_rebase dt_inc NULL
+ dt	desktop\win32\source\QuickStart		nmake	-	w	dt_win32_quickstart NULL
+ dt	desktop\win32\source\QuickStart\so	nmake	-	w	dt_win32_quickstart_so dt_win32_quickstart.w NULL
+ 
  dt	desktop\os2\source\applauncher			nmake	-	p	dt_applauncher dt_inc NULL
  dt	desktop\unx\source\officeloader		nmake	-	u	dt_officeloader_unx dt_inc NULL
 +dt     desktop\unx\source                      nmake   -       u       dt_uwrapper     dt_inc NULL
  dt	desktop\source\pagein					nmake	-	u	dt_pagein dt_inc NULL
  dt	desktop\source\pkgchk\unopkg			nmake	-	all	dt_unopkg dt_dp_misc dt_app dt_inc dt_guiloader.w NULL
 +dt     desktop\unx\splash                      nmake   -       u       dt_usplash      dt_pagein.u dt_inc NULL
  dt	desktop\source\deployment				nmake	-	all	dt_deployment dt_dp_manager dt_dp_registry dt_dp_registry_package dt_dp_registry_executable dt_dp_registry_help dt_dp_registry_script dt_dp_registry_sfwk dt_dp_registry_component dt_dp_registry_configuration dt_dp_unopkg dt_inc dt_dp_misc NULL
  dt	desktop\source\deployment\misc				nmake	-	all	dt_dp_misc dt_inc NULL
  dt	desktop\source\deployment\unopkg			nmake	-	all	dt_dp_unopkg dt_inc NULL
@@@ -37,8 -38,8 +40,8 @@@ dt	desktop\source\deployment\registry\c
  dt	desktop\source\deployment\registry\help			nmake	-	all	dt_dp_registry_help dt_inc NULL
  dt	desktop\source\deployment\registry\executable		nmake	-	all	dt_dp_registry_executable dt_inc NULL
  dt	desktop\scripts 						nmake	-	u	dt_scripts dt_inc NULL
 -dt	desktop\util							nmake	-	all	dt_util dt_app dt_pagein.u dt_so_comp dt_spl dt_wrapper.w dt_officeloader.w dt_officeloader_unx.u dt_migr dt_rebase.w dt_win32_quickstart_so.w NULL
++dt	desktop\util							nmake	-	all	dt_util dt_app dt_pagein.u dt_so_comp dt_spl dt_uwrapper.u dt_usplash.u dt_wrapper.w dt_officeloader.w dt_officeloader_unx.u dt_migr dt_rebase.w dt_win32_quickstart_so.w dt_zipintro NULL
  dt	desktop\zipintro							nmake	-	all	dt_zipintro NULL
- dt	desktop\util							nmake	-	all	dt_util dt_app dt_pagein.u dt_so_comp dt_spl dt_uwrapper.u dt_usplash.u dt_wrapper.w dt_officeloader.w dt_officeloader_unx.u dt_migr dt_rebase.w dt_zipintro NULL
  dt  desktop\registry\data\org\openoffice\Office                     nmake   -  all sn_regconfig NULL
  dt  desktop\source\registration\com\sun\star\servicetag\resources   get     -  all sn_svctagres NULL
  dt  desktop\source\registration\com\sun\star\servicetag             nmake   -  all sn_svctag NULL
diff --cc desktop/prj/d.lst
index bb18fe3,be7b773..cb4fa06
mode 100755,100644..100755
--- a/desktop/prj/d.lst
+++ b/desktop/prj/d.lst
diff --cc desktop/source/app/app.cxx
index a8af3ea,b9b703d..1f915a9
mode 100755,100644..100755
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@@ -1620,9 -1629,10 +1620,10 @@@ int Desktop::Main(
          // there is no other instance using our data files from a remote host
          RTL_LOGFILE_CONTEXT_TRACE( aLog, "desktop (lo119109) Desktop::Main -> Lockfile" );
          m_pLockfile = new Lockfile;
-         if ( !pCmdLineArgs->IsInvisible() && !pCmdLineArgs->IsNoLockcheck() && !m_pLockfile->check( Lockfile_execWarning )) {
 -        if ( !pCmdLineArgs->IsHeadless() && !pCmdLineArgs->IsInvisible() && 
++        if ( !pCmdLineArgs->IsHeadless() && !pCmdLineArgs->IsInvisible() &&
+              !pCmdLineArgs->IsNoLockcheck() && !m_pLockfile->check( Lockfile_execWarning )) {
              // Lockfile exists, and user clicked 'no'
 -            return;
 +            return EXIT_FAILURE;
          }
          RTL_LOGFILE_CONTEXT_TRACE( aLog, "desktop (lo119109) Desktop::Main <- Lockfile" );
  
@@@ -2097,12 -2119,10 +2098,12 @@@ sal_Bool Desktop::InitializeQuickstartM
          // unfortunately this broke the QUARTZ behavior which is to always run
          // in quickstart mode since Mac applications do not usually quit
          // when the last document closes
-         //#ifndef QUARTZ
+         #ifndef QUARTZ
          if ( bQuickstart )
-         //#endif
+         #endif
          {
 +            Sequence< Any > aSeq( 1 );
 +            aSeq[0] <<= bQuickstart;
              Reference < XComponent > xQuickstart( rSMgr->createInstanceWithArguments(
                                                  DEFINE_CONST_UNICODE( "com.sun.star.office.Quickstart" ), aSeq ),
                                                  UNO_QUERY );
diff --cc desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx
index 4fa87eb,f5374a8..4fa87eb
mode 100755,100644..100644
--- a/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx
+++ b/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx
diff --cc desktop/source/deployment/registry/dp_backend.cxx
index 0748686,563e503..bde842c
mode 100755,100644..100644
--- a/desktop/source/deployment/registry/dp_backend.cxx
+++ b/desktop/source/deployment/registry/dp_backend.cxx
diff --cc desktop/util/ooverinfo.rc
index 5412f5f,3ddff6b..be74695
mode 100755,100644..100755
--- a/desktop/util/ooverinfo.rc
+++ b/desktop/util/ooverinfo.rc
diff --cc desktop/util/verinfo.rc
index 7fce1e7,5a2b037..f24dff5
mode 100755,100644..100644
--- a/desktop/util/verinfo.rc
+++ b/desktop/util/verinfo.rc
diff --cc desktop/win32/source/QuickStart/OOQuickStart.rc
index 0000000,9baf7e8..9baf7e8
mode 000000,100644..100755
--- a/desktop/win32/source/QuickStart/OOQuickStart.rc
+++ b/desktop/win32/source/QuickStart/OOQuickStart.rc
diff --cc desktop/win32/source/QuickStart/QuickStart.cpp
index 0000000,496832f..204b3d3
mode 000000,100644..100755
--- a/desktop/win32/source/QuickStart/QuickStart.cpp
+++ b/desktop/win32/source/QuickStart/QuickStart.cpp
@@@ -1,0 -1,423 +1,426 @@@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ // QuickStart.cpp : Defines the entry point for the application.
+ //
+ 
+ #include "stdafx.h"
+ #include "resource.h"
+ #include <systools/win32/uwinapi.h>
+ #include <stdio.h>
+ 
+ #define MY_TASKBAR_NOTIFICATION         WM_USER+1
+ 
+ #define MAX_LOADSTRING 100
+ 
+ // message used to communicate with soffice
+ #define TERMINATIONVETO_MESSAGE "SO TerminationVeto"
+ #define TERMINATE_MESSAGE       "SO Terminate"
+ #define LISTENER_WINDOWCLASS    "SO Listener Class"
+ #define KILLTRAY_MESSAGE		"SO KillTray"
+ 
+ static  UINT aTerminationVetoMessage = 0x7FFF;
+ static  UINT aTerminateMessage = 0x7FFF;
+ static  HMENU popupMenu = NULL;
+ static  bool bTerminateVeto = true;
+ 
+ #define UPDATE_TIMER   1
+ 
+ // Global Variables:
+ HINSTANCE hInst;								// current instance
+ TCHAR szTitle[MAX_LOADSTRING];					// The title bar text
+ TCHAR szWindowClass[MAX_LOADSTRING];			// The title bar text
+ 
+ TCHAR szExitString[MAX_LOADSTRING];			    
+ TCHAR szTooltipString[MAX_LOADSTRING];			
+ 
+ // Foward declarations of functions included in this code module:
+ ATOM				MyRegisterClass(HINSTANCE hInstance);
+ BOOL				InitInstance(HINSTANCE, int);
+ LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
+ LRESULT CALLBACK	About(HWND, UINT, WPARAM, LPARAM);
+ 
+ bool SofficeRuns()
+ {
+     // check for soffice by searching the communication window
+     return ( FindWindowEx( NULL, NULL, LISTENER_WINDOWCLASS, NULL ) == NULL ) ? false : true;
+ }
+ 
+ bool launchSoffice( )
+ {
+     if ( !SofficeRuns() )
+     {
+         // UINT ret = WinExec( "h:\\office60.630b\\program\\swriter.exe -bean", SW_SHOW );  
+         char filename[_MAX_PATH + 1];
+ 
+         filename[_MAX_PATH] = 0;
+         GetModuleFileName( NULL, filename, _MAX_PATH ); // soffice resides in the same dir
+         char *p = strrchr( filename, '\\' );
+         if ( !p )
+             return false;
+ 
+         strncpy( p+1, "soffice.exe", _MAX_PATH - (p+1 - filename) );
+ 
+         char imagename[_MAX_PATH + 1];
+ 
+         imagename[_MAX_PATH] = 0;
+         _snprintf(imagename, _MAX_PATH, "\"%s\" -quickstart", filename );
+ 
+         UINT ret = WinExec( imagename, SW_SHOW );
+         if ( ret < 32 )
+             return false;
+ /*
+         // wait until we can communicate
+         int retry = 30;
+         while (retry-- && !SofficeRuns() )
+             Sleep(1000);
+ 
+         return SofficeRuns();
+         */
+         return true;
+     }
+     else
+         return true;
+ }
+ 
+ void NotifyListener( HWND hWnd )
+ {
+     static HICON hIconActive=NULL;
+     //static HICON hIconInActive=NULL;
+ 
+     if( !hIconActive )
+     {
+         hIconActive = (HICON)LoadImage( GetModuleHandle( NULL ), MAKEINTRESOURCE( ICON_ACTIVE ), 
+             IMAGE_ICON, GetSystemMetrics( SM_CXSMICON ), GetSystemMetrics( SM_CYSMICON ),
+             LR_DEFAULTCOLOR | LR_SHARED );
+ 
+ /*        hIconInActive = (HICON)LoadImage( GetModuleHandle( NULL ), MAKEINTRESOURCE( ICON_INACTIVE ), 
+             IMAGE_ICON, GetSystemMetrics( SM_CXSMICON ), GetSystemMetrics( SM_CYSMICON ),
+             LR_DEFAULTCOLOR | LR_SHARED );
+             */
+     }
+ 
+     NOTIFYICONDATA nid;
+     nid.cbSize = sizeof(NOTIFYICONDATA); 
+     nid.hWnd   = hWnd; 
+     nid.uID    = IDM_QUICKSTART; 
 -    nid.szTip[elementsof(nid.szTip) - 1] = 0;
++    nid.szTip[SAL_N_ELEMENTS(nid.szTip) - 1] = 0;
+ //    nid.hIcon = bTerminateVeto ? hIconActive : hIconInActive;
 -//    strncpy(nid.szTip, bTerminateVeto ? STRING_QUICKSTARTACTIVE : STRING_QUICKSTARTINACTIVE, elementsof(nid.szTip) - 1 ); 
++//    strncpy(nid.szTip, bTerminateVeto ? STRING_QUICKSTARTACTIVE : STRING_QUICKSTARTINACTIVE, SAL_N_ELEMENTS(nid.szTip) - 1 );
+     nid.hIcon = hIconActive;
 -    strncpy(nid.szTip, szTooltipString, elementsof(nid.szTip) - 1); 
++    strncpy(nid.szTip, szTooltipString, SAL_N_ELEMENTS(nid.szTip) - 1);
+     nid.uFlags = NIF_TIP|NIF_ICON; 
+ 
+     // update systray
+     Shell_NotifyIcon( NIM_MODIFY, &nid );	
+     //CheckMenuItem( popupMenu, IDM_QUICKSTART, bTerminateVeto ? MF_CHECKED : MF_UNCHECKED );
+ 
+     // notify listener
+     SendMessage( HWND_BROADCAST, aTerminationVetoMessage, (WORD) bTerminateVeto, 0L );
+ }
+ 
+ 
+ 
+ int APIENTRY WinMain(HINSTANCE hInstance,
+                      HINSTANCE /*hPrevInstance*/,
+                      LPSTR     /*lpCmdLine*/,
+                      int       nCmdShow)
+ {
+     // Look for -killtray argument
+ 
+     for ( int i = 1; i < __argc; i++ )
+     {
+         if ( 0 == strcmp( __argv[i], "-killtray" ) )
+         {
+             HWND	hwndTray = FindWindow( LISTENER_WINDOWCLASS, NULL );
+ 
+             if ( hwndTray )
+             {
+                 UINT	uMsgKillTray = RegisterWindowMessage( KILLTRAY_MESSAGE );
+                 SendMessage( hwndTray, uMsgKillTray, 0, 0 );
+             }
+ 
+             return 0;
+         }
+     }
+ 
+     launchSoffice();
+     return 0;
+ 
+      // TODO: Place code here.
+     MSG msg;
+     HACCEL hAccelTable;
+     aTerminationVetoMessage = RegisterWindowMessage( TERMINATIONVETO_MESSAGE );
+     aTerminateMessage       = RegisterWindowMessage( TERMINATE_MESSAGE );
+ 
+     // Initialize global strings
+     LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
+     LoadString(hInstance, IDC_QUICKSTART, szWindowClass, MAX_LOADSTRING);
+ 
+     LoadString(hInstance, IDS_EXIT,    szExitString, MAX_LOADSTRING);
+     LoadString(hInstance, IDS_TOOLTIP, szTooltipString, MAX_LOADSTRING);
+ 
+     MyRegisterClass(hInstance);
+ 
+     // Perform application initialization:
+     if (!InitInstance (hInstance, nCmdShow)) 
+     {
+         return FALSE;
+     }
+ 
+     hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_QUICKSTART);
+ 
+     // Main message loop:
+     while (GetMessage(&msg, NULL, 0, 0)) 
+     {
+         if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
+         {
+             TranslateMessage(&msg);
+             DispatchMessage(&msg);
+         }
+     }
+ 
+     return msg.wParam;
+ }
+ 
+ 
+ 
+ //
+ //  FUNCTION: MyRegisterClass()
+ //
+ //  PURPOSE: Registers the window class.
+ //
+ //  COMMENTS:
+ //
+ //    This function and its usage is only necessary if you want this code
+ //    to be compatible with Win32 systems prior to the 'RegisterClassEx'
+ //    function that was added to Windows 95. It is important to call this function
+ //    so that the application will get 'well formed' small icons associated
+ //    with it.
+ //
+ ATOM MyRegisterClass(HINSTANCE hInstance)
+ {
+     WNDCLASSEX wcex;
+ 
+     wcex.cbSize = sizeof(WNDCLASSEX); 
+ 
+     wcex.style			= CS_HREDRAW | CS_VREDRAW;
+     wcex.lpfnWndProc	= (WNDPROC)WndProc;
+     wcex.cbClsExtra		= 0;
+     wcex.cbWndExtra		= 0;
+     wcex.hInstance		= hInstance;
+     wcex.hIcon			= LoadIcon(hInstance, (LPCTSTR)IDI_QUICKSTART);
+     wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
+     wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
+     wcex.lpszMenuName	= NULL;
+     wcex.lpszClassName	= szWindowClass;
+     wcex.hIconSm		= LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
+ 
+     return RegisterClassEx(&wcex);
+ }
+ 
+ //
+ //   FUNCTION: InitInstance(HANDLE, int)
+ //
+ //   PURPOSE: Saves instance handle and creates main window
+ //
+ //   COMMENTS:
+ //
+ //        In this function, we save the instance handle in a global variable and
+ //        create and display the main program window.
+ //
+ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
+ {
+    HWND hWnd;
+ 
+    hInst = hInstance; // Store instance handle in our global variable
+ 
+    hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
+       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
+ 
+    if (!hWnd)
+    {
+       return FALSE;
+    }
+ 
+    nCmdShow = SW_HIDE;   // hide main window, we only need the taskbar icon
+    ShowWindow(hWnd, nCmdShow);
+    UpdateWindow(hWnd);
+ 
+    return TRUE;
+ }
+ 
+ //
+ //  FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
+ //
+ //  PURPOSE:  Processes messages for the main window.
+ //
+ //  WM_COMMAND	- process the application menu
+ //  WM_PAINT	- Paint the main window
+ //  WM_DESTROY	- post a quit message and return
+ //
+ //
+ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+ {
+     switch (message) 
+     {
+         case WM_CREATE:
+         {
+             // make sure soffice runs
+             if( !launchSoffice() )
+                 return -1;
+ 
+             // create popup menu
+             popupMenu = CreatePopupMenu();
+             static int count=0;
+ 
+             // Add my items
+             MENUITEMINFO mi;
+             mi.cbSize = sizeof(MENUITEMINFO); 
+             mi.fMask=MIIM_TYPE|MIIM_STATE|MIIM_ID; 
+             mi.fType=MFT_STRING; 
+             mi.fState=MFS_ENABLED|MFS_DEFAULT; 
+             mi.wID = IDM_QUICKSTART; 
+             mi.hSubMenu=NULL; 
+             mi.hbmpChecked=NULL; 
+             mi.hbmpUnchecked=NULL; 
+             mi.dwItemData=NULL; 
+             mi.dwTypeData = "QuickStart"; 
+             mi.cch = strlen(mi.dwTypeData);
+ //            InsertMenuItem(popupMenu, count++, TRUE, &mi);
+ 
+             mi.cbSize = sizeof(MENUITEMINFO); 
+             mi.fMask=MIIM_TYPE|MIIM_STATE|MIIM_ID; 
+             mi.fType=MFT_STRING; 
+             mi.fState=MFS_ENABLED; 
+             mi.wID = IDM_ABOUT; 
+             mi.hSubMenu=NULL; 
+             mi.hbmpChecked=NULL; 
+             mi.hbmpUnchecked=NULL; 
+             mi.dwItemData=NULL; 
+             mi.dwTypeData = "Info..."; 
+             mi.cch = strlen(mi.dwTypeData);
+ //            InsertMenuItem(popupMenu, count++, TRUE, &mi);
+ 
+             mi.cbSize = sizeof(MENUITEMINFO); 
+             mi.fMask=MIIM_TYPE;
+             mi.fType=MFT_SEPARATOR; 
+             mi.hSubMenu=NULL; 
+             mi.hbmpChecked=NULL; 
+             mi.hbmpUnchecked=NULL; 
+             mi.dwItemData=NULL; 
+ //            InsertMenuItem(popupMenu, count++, TRUE, &mi);
+ 
+             mi.cbSize = sizeof(MENUITEMINFO); 
+             mi.fMask=MIIM_TYPE|MIIM_STATE|MIIM_ID; 
+             mi.fType=MFT_STRING; 
+             mi.fState=MFS_ENABLED; 
+             mi.wID = IDM_EXIT; 
+             mi.hSubMenu=NULL; 
+             mi.hbmpChecked=NULL; 
+             mi.hbmpUnchecked=NULL; 
+             mi.dwItemData=NULL; 
+             mi.dwTypeData = szExitString; 
+             mi.cch = strlen(mi.dwTypeData);
+             InsertMenuItem(popupMenu, count++, TRUE, &mi);
+ 
+             // add taskbar icon
+             NOTIFYICONDATA nid;
+             nid.cbSize = sizeof(NOTIFYICONDATA); 
+             nid.hWnd   = hWnd; 
+             nid.uID    = IDM_QUICKSTART; 
+             nid.uFlags = NIF_MESSAGE; 
+             nid.uCallbackMessage=MY_TASKBAR_NOTIFICATION; 
+             Shell_NotifyIcon(NIM_ADD, &nid);	
+ 
+             // and update state
+             NotifyListener( hWnd );
+ 
+             // check for soffice
+             SetTimer(hWnd, UPDATE_TIMER, 3000, NULL);
+         }
+         break;
+         
+         case MY_TASKBAR_NOTIFICATION: // message from taskbar
+             switch(lParam)
+             {
+ /*
+                 case WM_LBUTTONDBLCLK:
+                     bTerminateVeto = bTerminateVeto ? false : true;
+                     NotifyListener( hWnd );
+                     break;
+                     */
+ 
+                 case WM_LBUTTONDOWN: 
+                 case WM_RBUTTONDOWN: 
+                 {
+                     POINT pt;
+                     GetCursorPos(&pt);
+                     SetForegroundWindow( hWnd );
+                     int m = TrackPopupMenuEx(popupMenu, TPM_RETURNCMD|TPM_LEFTALIGN|TPM_RIGHTBUTTON, 
+                         pt.x, pt.y, hWnd, NULL);
+                     // BUGFIX: See Q135788 (PRB: Menus for Notification Icons Don't Work Correctly)
+                     PostMessage(hWnd, NULL, 0, 0);
+                     switch(m)
+                     {
+                     case IDM_QUICKSTART:
+                         bTerminateVeto = bTerminateVeto ? false : true;
+                         NotifyListener( hWnd );
+                         break;
+                     case IDM_ABOUT:
+                         DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
+                         break;
+                     case IDM_EXIT:
+                         DestroyWindow(hWnd);
+                         break;
+                     }
+                 }
+                 break;
+             }
+             break;
+ 
+         case WM_TIMER:
+             if( wParam == UPDATE_TIMER )
+             {
+                 // update state
+                 NotifyListener( hWnd );
+             }
+             break;
+ 
+         case WM_DESTROY:
+             // try to terminate office
+             SendMessage( HWND_BROADCAST, aTerminateMessage, 0, 0L );
+ 
+             // delete taskbar icon
+             NOTIFYICONDATA nid;
+             nid.cbSize=sizeof(NOTIFYICONDATA); 
+             nid.hWnd = hWnd; 
+             nid.uID = IDM_QUICKSTART; 
+             Shell_NotifyIcon(NIM_DELETE, &nid);	
+ 
+             PostQuitMessage(0);
+             break;
+         default:
+             return DefWindowProc(hWnd, message, wParam, lParam);
+    }
+    return 0;
+ }
+ 
+ // Mesage handler for about box.
+ LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM)
+ {
+     switch (message)
+     {
+         case WM_INITDIALOG:
+                 return TRUE;
+ 
+         case WM_COMMAND:
+             if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
+             {
+                 EndDialog(hDlg, LOWORD(wParam));
+                 return TRUE;
+             }
+             break;
+     }
+     return FALSE;
+ }
++
++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --cc desktop/win32/source/QuickStart/QuickStart.h
index 0000000,d0afd98..b61a040
mode 000000,100644..100755
--- a/desktop/win32/source/QuickStart/QuickStart.h
+++ b/desktop/win32/source/QuickStart/QuickStart.h
@@@ -1,0 -1,12 +1,15 @@@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ 
+ #if !defined(AFX_QUICKSTART_H__7D38EE02_7699_4CF0_AFF9_FD92E05CC009__INCLUDED_)
+ #define AFX_QUICKSTART_H__7D38EE02_7699_4CF0_AFF9_FD92E05CC009__INCLUDED_
+ 
+ #if _MSC_VER > 1000
+ #pragma once
+ #endif // _MSC_VER > 1000
+ 
+ #include "resource.h"
+ 
+ 
+ #endif // !defined(AFX_QUICKSTART_H__7D38EE02_7699_4CF0_AFF9_FD92E05CC009__INCLUDED_)
++
++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --cc desktop/win32/source/QuickStart/StdAfx.h
index 0000000,3a5bcf5..88c24f4
mode 000000,100644..100755
--- a/desktop/win32/source/QuickStart/StdAfx.h
+++ b/desktop/win32/source/QuickStart/StdAfx.h
@@@ -1,0 -1,39 +1,42 @@@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ // stdafx.h : include file for standard system include files,
+ //  or project specific include files that are used frequently, but
+ //      are changed infrequently
+ //
+ 
+ #if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
+ #define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
+ 
+ #if _MSC_VER > 1000
+ #pragma once
+ #endif // _MSC_VER > 1000
+ 
+ #define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+ 
+ 
+ // Windows Header Files:
+ #if defined _MSC_VER
+ #pragma warning(push, 1)
+ #endif
+ #include <windows.h>
+ #include <shellapi.h>
+ #if defined _MSC_VER
+ #pragma warning(pop)
+ #endif 
+ 
+ // C RunTime Header Files
+ #include <stdlib.h>
+ #include <malloc.h>
+ #include <memory.h>
+ #include <tchar.h>
+ 
+ // Local Header Files
+ 
+ // TODO: reference additional headers your program requires here
+ 
+ //{{AFX_INSERT_LOCATION}}
+ // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+ 
+ #endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
++
++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --cc desktop/win32/source/QuickStart/resource.h
index 0000000,cd246c4..cd47c2a
mode 000000,100644..100755
--- a/desktop/win32/source/QuickStart/resource.h
+++ b/desktop/win32/source/QuickStart/resource.h
@@@ -1,0 -1,32 +1,35 @@@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ //{{NO_DEPENDENCIES}}
+ // Microsoft Visual C++ generated include file.
+ // Used by QUICKSTART.RC
+ //
+ #define IDR_MAINFRAME					128
+ #define IDD_QUICKSTART_DIALOG		102
+ #define IDD_ABOUTBOX					103
+ #define IDS_APP_TITLE					103
+ #define IDM_ABOUT						104
+ #define IDM_EXIT						105
+ #define IDS_HELLO						106
+ #define IDI_QUICKSTART	            107
+ #define IDI_SMALL						108
+ #define IDC_QUICKSTART	            109
+ #define IDM_QUICKSTART                  110
+ #define IDS_TOOLTIP                     111
+ #define IDS_EXIT                        112
+ #define ICON_ACTIVE                     1
+ #define ICON_INACTIVE                   2
+ #define IDC_MYICON						3
+ #define IDC_STATIC	                    -1
+ // Next default values for new objects
+ // 
+ #ifdef APSTUDIO_INVOKED
+ #ifndef APSTUDIO_READONLY_SYMBOLS
+ 
+ #define _APS_NEXT_RESOURCE_VALUE        129
+ #define _APS_NEXT_COMMAND_VALUE         32771
+ #define _APS_NEXT_CONTROL_VALUE         1000
+ #define _APS_NEXT_SYMED_VALUE           113
+ #endif
+ #endif
++
++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --cc desktop/win32/source/QuickStart/so/QuickStart.rc
index 0000000,732904d..732904d
mode 000000,100644..100755
--- a/desktop/win32/source/QuickStart/so/QuickStart.rc
+++ b/desktop/win32/source/QuickStart/so/QuickStart.rc
diff --cc desktop/win32/source/QuickStart/so/makefile.mk
index 0000000,50154c7..50154c7
mode 000000,100644..100755
--- a/desktop/win32/source/QuickStart/so/makefile.mk
+++ b/desktop/win32/source/QuickStart/so/makefile.mk
diff --cc desktop/win32/source/applauncher/makefile.mk
index f0f5743,d08309b..d08309b
mode 100755,100644..100755
--- a/desktop/win32/source/applauncher/makefile.mk
+++ b/desktop/win32/source/applauncher/makefile.mk
diff --cc desktop/win32/source/guiloader/makefile.mk
index 5bb1c52,7912471..7912471
mode 100755,100644..100755
--- a/desktop/win32/source/guiloader/makefile.mk
+++ b/desktop/win32/source/guiloader/makefile.mk
diff --cc drawinglayer/source/attribute/fontattribute.cxx
index 7ec5dfd,4c3b7a4..8f8d42a
mode 100755,100644..100755
--- a/drawinglayer/source/attribute/fontattribute.cxx
+++ b/drawinglayer/source/attribute/fontattribute.cxx
diff --cc editeng/inc/editeng/fontitem.hxx
index b133626,8e66ca9..95b4b8e
--- a/editeng/inc/editeng/fontitem.hxx
+++ b/editeng/inc/editeng/fontitem.hxx
@@@ -81,32 -80,25 +81,25 @@@ public
                                      SfxMapUnit ePresMetric,
                                      String &rText, const IntlWrapper * = 0 ) const;
  
 -    // ZugriffsMethoden:
 +    // Access methods:
-     inline String &GetFamilyName() { return aFamilyName; }
+     void SetFamilyName( const String& rFamilyName ) { aFamilyName = rFamilyName; }
      inline const String &GetFamilyName() const { return aFamilyName; }
  
-     inline String &GetStyleName() { return aStyleName; }
+     void SetStyleName(const String &rStyleName ) { aStyleName = rStyleName; }
      inline const String &GetStyleName() const { return aStyleName; }
  
-     inline FontFamily &GetFamily() { return eFamily; }
+     void SetFamily( FontFamily _eFamily ) { eFamily = _eFamily; }
      inline FontFamily GetFamily() const { return eFamily; }
  
-     inline FontPitch &GetPitch() { return ePitch; }
+     void SetPitch(FontPitch _ePitch ) { ePitch = _ePitch; }
      inline FontPitch GetPitch() const { return ePitch; }
  
-     inline rtl_TextEncoding &GetCharSet() { return eTextEncoding; }
+     void SetCharSet(rtl_TextEncoding _eEncoding) { eTextEncoding = _eEncoding; }
+     
      inline rtl_TextEncoding GetCharSet() const { return eTextEncoding; }
  
-     inline SvxFontItem& operator=(const SvxFontItem& rFont)
-     {
-         aFamilyName =  rFont.GetFamilyName();
-         aStyleName =   rFont.GetStyleName();
-         eFamily =      rFont.GetFamily();
-         ePitch =   rFont.GetPitch();
-         eTextEncoding = rFont.GetCharSet();
-         return *this;
-     }
- 
+     SvxFontItem& operator=(const SvxFontItem& rFont);
+     
      static void EnableStoreUnicodeNames( sal_Bool bEnable );
  
  };
diff --cc editeng/source/editeng/edtspell.cxx
index 67cfaad,9172879..7396bc7
mode 100755,100644..100755
--- a/editeng/source/editeng/edtspell.cxx
+++ b/editeng/source/editeng/edtspell.cxx
@@@ -581,8 -583,13 +581,13 @@@ sal_Bool EdtAutoCorrDoc::Insert( sal_uI
  
  sal_Bool EdtAutoCorrDoc::Replace( sal_uInt16 nPos, const String& rTxt )
  {
+     return ReplaceRange( nPos, rTxt.Len(), rTxt );
+ }
+ 
+ sal_Bool EdtAutoCorrDoc::ReplaceRange( xub_StrLen nPos, xub_StrLen nSourceLength, const String& rTxt )
+ {
 -    // Eigentlich ein Replace einfuehren => Entspr. UNDO
 +    // Actually a Replace introduce => corresponds to UNDO
-     sal_uInt16 nEnd = nPos+rTxt.Len();
+     sal_uInt16 nEnd = nPos+nSourceLength;
      if ( nEnd > pCurNode->Len() )
          nEnd = pCurNode->Len();
  
diff --cc editeng/source/editeng/impedit4.cxx
index 48016aa,8f88c59..6246ae9
mode 100644,100755..100644
--- a/editeng/source/editeng/impedit4.cxx
+++ b/editeng/source/editeng/impedit4.cxx
diff --cc editeng/source/items/numitem.cxx
index 266776a,d482108..f04b8ea
--- a/editeng/source/items/numitem.cxx
+++ b/editeng/source/items/numitem.cxx
@@@ -374,8 -401,13 +374,10 @@@ SvStream&   SvxNumberFormat::Store(SvSt
      return rStream;
  }
  
 -/* -----------------------------23.02.01 11:10--------------------------------
 -
 - ---------------------------------------------------------------------------*/
  SvxNumberFormat& SvxNumberFormat::operator=( const SvxNumberFormat& rFormat )
  {
+     if (& rFormat == this) { return *this; }
+ 
      SetNumberingType(rFormat.GetNumberingType());
          eNumAdjust			= rFormat.eNumAdjust ;
          nInclUpperLevels 	= rFormat.nInclUpperLevels ;
diff --cc editeng/source/items/textitem.cxx
index 43a6ab8,364ac1c..463aa93
mode 100644,100755..100755
--- a/editeng/source/items/textitem.cxx
+++ b/editeng/source/items/textitem.cxx
@@@ -256,9 -256,20 +256,19 @@@ SvxFontItem::SvxFontItem( const FontFam
  }
  
  // -----------------------------------------------------------------------
+ SvxFontItem& SvxFontItem::operator=(const SvxFontItem& rFont)
+ {
+     aFamilyName =  rFont.GetFamilyName();
+     aStyleName =   rFont.GetStyleName();
+     eFamily =      rFont.GetFamily();
+     ePitch =   rFont.GetPitch();
+     eTextEncoding = rFont.GetCharSet();
+     return *this;
+ }
+ // -----------------------------------------------------------------------
  
 -sal_Bool SvxFontItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 +bool SvxFontItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
  {
 -//    sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
      nMemberId &= ~CONVERT_TWIPS;
      switch(nMemberId)
      {
diff --cc editeng/source/misc/svxacorr.cxx
index a734520,dad3389..3081606
mode 100644,100755..100755
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@@ -443,24 -489,14 +479,24 @@@ sal_Bool SvxAutoCorrect::FnCptlSttWrd( 
          String sWord( rTxt.Copy( nSttPos - 1, nEndPos - nSttPos + 1 ));
          if( !FindInWrdSttExceptList(eLang, sWord) )
          {
 -            sal_Unicode cSave = rTxt.GetChar( nSttPos );
 -            String sChar( cSave );
 -            rCC.toLower( sChar );
 -            if( sChar.GetChar(0) != cSave && rDoc.ReplaceRange( nSttPos, 1, sChar ))
 +            ::com::sun::star::uno::Reference<
 +                ::com::sun::star::linguistic2::XSpellChecker1 > xSpeller =
 +                SvxGetSpellChecker();
 +            Sequence< ::com::sun::star::beans::PropertyValue > aEmptySeq;
 +            // Check that word isn't correctly spelled before correcting
 +            ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XSpellAlternatives > xSpellAlt
 +                = xSpeller->spell(sWord, eLang, aEmptySeq);
 +            if(xSpellAlt.is())
              {
 -                if( SaveWordWrdSttLst & nFlags )
 -                    rDoc.SaveCpltSttWord( CptlSttWrd, nSttPos, sWord, cSave );
 -                bRet = sal_True;
 +                sal_Unicode cSave = rTxt.GetChar( nSttPos );
 +                String sChar( cSave );
 +                rCC.toLower( sChar );
-                 if( sChar.GetChar(0) != cSave && rDoc.Replace( nSttPos, sChar ))
++                if( sChar.GetChar(0) != cSave && rDoc.ReplaceRange( nSttPos, 1, sChar ))
 +                {
 +                    if( SaveWordWrdSttLst & nFlags )
 +                        rDoc.SaveCpltSttWord( CptlSttWrd, nSttPos, sWord, cSave );
 +                    bRet = sal_True;
 +                }
              }
          }
      }
@@@ -1061,9 -1104,9 +1097,9 @@@ sal_Bool SvxAutoCorrect::FnCptlSttSntnc
      nSttPos = sal::static_int_cast< xub_StrLen >( pWordStt - rTxt.GetBuffer() );
      String sChar( cSave );
      rCC.toUpper( sChar );
-     sal_Bool bRet = sChar.GetChar(0) != cSave && rDoc.Replace( nSttPos, sChar );
+     sal_Bool bRet = sChar.GetChar(0) != cSave && rDoc.ReplaceRange( nSttPos, 1, sChar );
  
 -    // das Wort will vielleicht jemand haben
 +    // Parahaps someone wants to have the word
      if( bRet && SaveWordCplSttLst & nFlags )
          rDoc.SaveCpltSttWord( CptlSttSntnc, nSttPos, sWord, cSave );
  
diff --cc framework/inc/services/substitutepathvars.hxx
index 7ffd863,3535d50..2ffec8c
mode 100755,100644..100755
--- a/framework/inc/services/substitutepathvars.hxx
+++ b/framework/inc/services/substitutepathvars.hxx
@@@ -34,10 -33,10 +34,10 @@@
  */
  #include <vector>
  #include <list>
 -#include <hash_map>
 +#include <boost/unordered_map.hpp>
  
  //_________________________________________________________________________________________________________________
- //	my own includes
+ //      my own includes
  //_________________________________________________________________________________________________________________
  #include <threadhelp/threadhelpbase.hxx>
  #include <macros/generic.hxx>
@@@ -110,7 -110,7 +111,7 @@@ struct SubstitutePathNotif
      const com::sun::star::uno::Sequence<rtl::OUString> aPropertyNames;
  };
  
- class SubstituteVariables : public ::boost::unordered_map<	::rtl::OUString,
 -class SubstituteVariables : public ::std::hash_map< ::rtl::OUString,
++class SubstituteVariables : public ::boost::unordered_map< ::rtl::OUString,
                                                      SubstituteRule,
                                                      OUStringHashCode,
                                                      ::std::equal_to< ::rtl::OUString > >
@@@ -254,51 -255,51 +255,51 @@@ class SubstitutePathVariables : privat
          virtual ::rtl::OUString SAL_CALL getSubstituteVariableValue( const ::rtl::OUString& variable )
              throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
  
-     protected:
-         DECL_LINK( implts_ConfigurationNotify, SubstitutePathNotify* );
- 
-         void			SetPredefinedPathVariables( PredefinedPathVariables& );
-         rtl::OUString	ConvertOSLtoUCBURL( const rtl::OUString& aOSLCompliantURL ) const;
- 
-         // Special case (transient) values can change during runtime!
-         // Don't store them in the pre defined struct
-         rtl::OUString   GetWorkPath() const;
-          rtl::OUString	GetWorkVariableValue() const;
-          rtl::OUString	GetPathVariableValue() const;
- 
-         rtl::OUString	GetHomeVariableValue() const;
- 
-         // XStringSubstitution implementation methods
-         rtl::OUString impl_substituteVariable( const ::rtl::OUString& aText, sal_Bool bSustRequired )
-             throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
-         rtl::OUString impl_reSubstituteVariables( const ::rtl::OUString& aText )
-             throw (::com::sun::star::uno::RuntimeException);
-         ::rtl::OUString impl_getSubstituteVariableValue( const ::rtl::OUString& variable )
-             throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- 
-     private:
-         class VarNameToIndexMap : public boost::unordered_map< ::rtl::OUString,
-                                                         PreDefVariable,
-                                                         OUStringHashCode,
-                                                         ::std::equal_to< ::rtl::OUString > >
-         {
-             inline void free()
+         protected:
+             DECL_LINK( implts_ConfigurationNotify, SubstitutePathNotify* );
+ 
+             void            SetPredefinedPathVariables( PredefinedPathVariables& );
+             rtl::OUString   ConvertOSLtoUCBURL( const rtl::OUString& aOSLCompliantURL ) const;
+ 
+             // Special case (transient) values can change during runtime!
+             // Don't store them in the pre defined struct
+             rtl::OUString   GetWorkPath() const;
+             rtl::OUString   GetWorkVariableValue() const;
+             rtl::OUString   GetPathVariableValue() const;
+ 
+             rtl::OUString   GetHomeVariableValue() const;
+ 
+             // XStringSubstitution implementation methods
+             rtl::OUString impl_substituteVariable( const ::rtl::OUString& aText, bool bSustRequired )
+                 throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
+             rtl::OUString impl_reSubstituteVariables( const ::rtl::OUString& aText )
+                 throw (::com::sun::star::uno::RuntimeException);
+             ::rtl::OUString impl_getSubstituteVariableValue( const ::rtl::OUString& variable )
+                 throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
+ 
+         private:
 -            class VarNameToIndexMap : public std::hash_map< ::rtl::OUString,
++            class VarNameToIndexMap : public boost::unordered_map< ::rtl::OUString,
+                                                             PreDefVariable,
+                                                             OUStringHashCode,
+                                                             ::std::equal_to< ::rtl::OUString > >
              {
-                 VarNameToIndexMap().swap( *this );
-             }
-         };
- 
-         // heavy used string
-         const rtl::OUString				m_aVarStart;
-         const rtl::OUString				m_aVarEnd;
- 
-         VarNameToIndexMap				      m_aPreDefVarMap;			      // Mapping from pre-def variable names to enum for array access
-         SubstituteVariables				m_aSubstVarMap;				// Active rule set map indexed by variable name!
-         PredefinedPathVariables			      m_aPreDefVars;				// All predefined variables
-         SubstitutePathVariables_Impl	            m_aImpl;					// Implementation class that access the configuration
-         ReSubstFixedVarOrderVector		      m_aReSubstFixedVarOrder;	      // To speed up resubstitution fixed variables (order for lookup)
-         ReSubstUserVarOrderVector		      m_aReSubstUserVarOrder;		      // To speed up resubstitution user variables
-         com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xServiceManager;
+                 inline void free()
+                 {
+                     VarNameToIndexMap().swap( *this );
+                 }
+             };
+ 
+             // heavy used string
+             const rtl::OUString          m_aVarStart;
+             const rtl::OUString          m_aVarEnd;
+ 
+             VarNameToIndexMap            m_aPreDefVarMap;         // Mapping from pre-def variable names to enum for array access
+             SubstituteVariables          m_aSubstVarMap;          // Active rule set map indexed by variable name!
+             PredefinedPathVariables      m_aPreDefVars;           // All predefined variables
+             SubstitutePathVariables_Impl m_aImpl;                 // Implementation class that access the configuration
+             ReSubstFixedVarOrderVector   m_aReSubstFixedVarOrder; // To speed up resubstitution fixed variables (order for lookup)
+             ReSubstUserVarOrderVector    m_aReSubstUserVarOrder;  // To speed up resubstitution user variables
+             com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xServiceManager;
  };
  
  }
diff --cc framework/source/services/substitutepathvars.cxx
index ace5ffc,9c55ceb..4724978
--- a/framework/source/services/substitutepathvars.cxx
+++ b/framework/source/services/substitutepathvars.cxx
@@@ -72,60 -73,63 +72,61 @@@
  //_________________________________________________________________________________________________________________
  //
  
- #define STRPOS_NOTFOUND						(sal_Int32)-1
+ #define STRPOS_NOTFOUND                  (sal_Int32)-1
  
- #define ASCII_STR( val )					rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( val ))
+ #define ASCII_STR( val )                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( val ))
  
- #define SEARCHPATH_DELIMITER				';'
+ #define SEARCHPATH_DELIMITER             ';'
  
  // Variable start/end characters
- #define	SIGN_STARTVARIABLE					ASCII_STR("$(")
- #define	SIGN_ENDVARIABLE					ASCII_STR(")")
+ #define SIGN_STARTVARIABLE               ASCII_STR("$(")
+ #define SIGN_ENDVARIABLE                 ASCII_STR(")")
  
  // Length of SUBSTITUTE_... to replace it with real values.
- #define	REPLACELENGTH_INST				7
- #define	REPLACELENGTH_PROG				7
- #define	REPLACELENGTH_USER				7
- #define REPLACELENGTH_WORK				7
- #define REPLACELENGTH_HOME				7
- #define REPLACELENGTH_TEMP				7
- #define REPLACELENGTH_PATH              7
- #define	REPLACELENGTH_INSTPATH			11
- #define	REPLACELENGTH_PROGPATH			11
- #define	REPLACELENGTH_USERPATH			11
- #define	REPLACELENGTH_INSTURL			10
- #define	REPLACELENGTH_PROGURL			10
- #define	REPLACELENGTH_USERURL			10
- #define	REPLACELENGTH_PATH				7
- #define	REPLACELENGTH_LANG				7
- #define	REPLACELENGTH_LANGID			9
- #define	REPLACELENGTH_VLANG				8
- #define	REPLACELENGTH_WORKDIRURL		13
+ #define REPLACELENGTH_INST               7
+ #define REPLACELENGTH_PROG               7
+ #define REPLACELENGTH_USER               7
+ #define REPLACELENGTH_WORK               7
+ #define REPLACELENGTH_HOME               7
+ #define REPLACELENGTH_TEMP               7
+ #define REPLACELENGTH_PATH               7
+ #define REPLACELENGTH_INSTPATH          11
+ #define REPLACELENGTH_PROGPATH          11
+ #define REPLACELENGTH_USERPATH          11
+ #define REPLACELENGTH_INSTURL           10
+ #define REPLACELENGTH_PROGURL           10
+ #define REPLACELENGTH_USERURL           10
+ #define REPLACELENGTH_PATH               7
+ #define REPLACELENGTH_LANG               7
+ #define REPLACELENGTH_LANGID             9
+ #define REPLACELENGTH_VLANG              8
+ #define REPLACELENGTH_WORKDIRURL        13
 -// --> PB 2004-10-27 #i32656# - new variable of hierachy service
 +// New variable of hierachy service (#i32656#)
  #define REPLACELENGTH_BASEINSTURL       14
  #define REPLACELENGTH_USERDATAURL       14
 -// <--
  
  // Name of the pre defined path variables
- #define VARIABLE_INST					"$(inst)"
- #define VARIABLE_PROG					"$(prog)"
- #define VARIABLE_USER					"$(user)"
- #define VARIABLE_WORK					"$(work)"
- #define VARIABLE_HOME					"$(home)"
- #define VARIABLE_TEMP					"$(temp)"
- #define VARIABLE_PATH					"$(path)"
- #define VARIABLE_LANG					"$(lang)"
- #define VARIABLE_LANGID					"$(langid)"
- #define VARIABLE_VLANG					"$(vlang)"
- #define VARIABLE_INSTPATH				"$(instpath)"
- #define VARIABLE_PROGPATH				"$(progpath)"
- #define VARIABLE_USERPATH				"$(userpath)"
- #define VARIABLE_INSTURL				"$(insturl)"
- #define VARIABLE_PROGURL				"$(progurl)"
- #define VARIABLE_USERURL				"$(userurl)"
- #define VARIABLE_WORKDIRURL				"$(workdirurl)"
+ #define VARIABLE_INST                                   "$(inst)"
+ #define VARIABLE_PROG                                   "$(prog)"
+ #define VARIABLE_USER                                   "$(user)"
+ #define VARIABLE_WORK                                   "$(work)"
+ #define VARIABLE_HOME                                   "$(home)"
+ #define VARIABLE_TEMP                                   "$(temp)"
+ #define VARIABLE_PATH                                   "$(path)"
+ #define VARIABLE_LANG                                   "$(lang)"
+ #define VARIABLE_LANGID                                 "$(langid)"
+ #define VARIABLE_VLANG                                  "$(vlang)"
+ #define VARIABLE_INSTPATH                               "$(instpath)"
+ #define VARIABLE_PROGPATH                               "$(progpath)"
+ #define VARIABLE_USERPATH                               "$(userpath)"
+ #define VARIABLE_INSTURL                                "$(insturl)"
+ #define VARIABLE_PROGURL                                "$(progurl)"
+ #define VARIABLE_USERURL                                "$(userurl)"
+ #define VARIABLE_WORKDIRURL                             "$(workdirurl)"
 -// --> PB 2004-10-27 #i32656# - new variable of hierachy service
 +// New variable of hierachy service (#i32656#)
- #define VARIABLE_BASEINSTURL            "$(baseinsturl)"
- #define VARIABLE_USERDATAURL            "$(userdataurl)"
+ #define VARIABLE_BASEINSTURL                            "$(baseinsturl)"
+ #define VARIABLE_USERDATAURL                            "$(userdataurl)"
 -// <--
+ #define VARIABLE_BRANDBASEURL                           "$(brandbaseurl)"
  
  using namespace com::sun::star::uno;
  using namespace com::sun::star::beans;
@@@ -195,28 -200,28 +197,27 @@@ static sal_Int16 aEnvPrioTable[ET_COUNT
  // Table with all fixed/predefined variables supported.
  static FixedVariable aFixedVarTable[] =
  {
-     { VARIABLE_INST,		PREDEFVAR_INST,			REPLACELENGTH_INST			},
-     { VARIABLE_PROG,		PREDEFVAR_PROG,			REPLACELENGTH_PROG			},
-     { VARIABLE_USER,		PREDEFVAR_USER,			REPLACELENGTH_USER			},
-     { VARIABLE_WORK,		PREDEFVAR_WORK,			REPLACELENGTH_WORK			},	// Special variable (transient)!
-     { VARIABLE_HOME,		PREDEFVAR_HOME,			REPLACELENGTH_HOME			},
-     { VARIABLE_TEMP,		PREDEFVAR_TEMP,			REPLACELENGTH_TEMP			},
-     { VARIABLE_PATH,        PREDEFVAR_PATH,         REPLACELENGTH_PATH          },
-     { VARIABLE_LANG,		PREDEFVAR_LANG,			REPLACELENGTH_LANG			},
-     { VARIABLE_LANGID,		PREDEFVAR_LANGID,		REPLACELENGTH_LANGID		},
-     { VARIABLE_VLANG,		PREDEFVAR_VLANG,		REPLACELENGTH_VLANG			},
-     { VARIABLE_INSTPATH,	PREDEFVAR_INSTPATH,		REPLACELENGTH_INSTPATH		},
-     { VARIABLE_PROGPATH,	PREDEFVAR_PROGPATH,		REPLACELENGTH_PROGPATH		},
-     { VARIABLE_USERPATH,	PREDEFVAR_USERPATH,		REPLACELENGTH_USERPATH		},
-     { VARIABLE_INSTURL,		PREDEFVAR_INSTURL,		REPLACELENGTH_INSTURL		},
-     { VARIABLE_PROGURL,		PREDEFVAR_PROGURL,		REPLACELENGTH_PROGURL		},
-     { VARIABLE_USERURL,		PREDEFVAR_USERURL,		REPLACELENGTH_USERURL		},
-     { VARIABLE_WORKDIRURL,  PREDEFVAR_WORKDIRURL,   REPLACELENGTH_WORKDIRURL    },  // Special variable (transient) and don't use for resubstitution!
+     { VARIABLE_INST,        PREDEFVAR_INST,         REPLACELENGTH_INST,     true                       },
+     { VARIABLE_PROG,        PREDEFVAR_PROG,         REPLACELENGTH_PROG,     true                       },
+     { VARIABLE_USER,        PREDEFVAR_USER,         REPLACELENGTH_USER,     true                       },
+     { VARIABLE_WORK,        PREDEFVAR_WORK,         REPLACELENGTH_WORK,     true                       },      // Special variable (transient)!
+     { VARIABLE_HOME,        PREDEFVAR_HOME,         REPLACELENGTH_HOME,     true                       },
+     { VARIABLE_TEMP,        PREDEFVAR_TEMP,         REPLACELENGTH_TEMP,     true                       },
+     { VARIABLE_PATH,        PREDEFVAR_PATH,         REPLACELENGTH_PATH,     true                       },
+     { VARIABLE_LANG,        PREDEFVAR_LANG,         REPLACELENGTH_LANG,     false                      },
+     { VARIABLE_LANGID,      PREDEFVAR_LANGID,       REPLACELENGTH_LANGID,   false                      },
+     { VARIABLE_VLANG,       PREDEFVAR_VLANG,        REPLACELENGTH_VLANG,    false                      },
+     { VARIABLE_INSTPATH,    PREDEFVAR_INSTPATH,     REPLACELENGTH_INSTPATH, true                       },
+     { VARIABLE_PROGPATH,    PREDEFVAR_PROGPATH,     REPLACELENGTH_PROGPATH, true                       },
+     { VARIABLE_USERPATH,    PREDEFVAR_USERPATH,     REPLACELENGTH_USERPATH, true                       },
+     { VARIABLE_INSTURL,     PREDEFVAR_INSTURL,      REPLACELENGTH_INSTURL,  true                       },
+     { VARIABLE_PROGURL,     PREDEFVAR_PROGURL,      REPLACELENGTH_PROGURL,  true                       },
+     { VARIABLE_USERURL,     PREDEFVAR_USERURL,      REPLACELENGTH_USERURL,  true                       },
+     { VARIABLE_WORKDIRURL,  PREDEFVAR_WORKDIRURL,   REPLACELENGTH_WORKDIRURL,true                      },  // Special variable (transient) and don't use for resubstitution!
 -    // --> PB 2004-10-27 #i32656# - new variable of hierachy service
 +    // New variable of hierachy service (#i32656#)
-     { VARIABLE_BASEINSTURL, PREDEFVAR_BASEINSTURL,  REPLACELENGTH_BASEINSTURL   },
-     { VARIABLE_USERDATAURL, PREDEFVAR_USERDATAURL,  REPLACELENGTH_USERDATAURL   },
-     { "$(brandbaseurl)", PREDEFVAR_BRANDBASEURL,
-       RTL_CONSTASCII_LENGTH("$(brandbaseurl)") }
+     { VARIABLE_BASEINSTURL, PREDEFVAR_BASEINSTURL,  REPLACELENGTH_BASEINSTURL,true                     },
+     { VARIABLE_USERDATAURL, PREDEFVAR_USERDATAURL,  REPLACELENGTH_USERDATAURL,true                     },
 -    // <--
+     { VARIABLE_BRANDBASEURL,PREDEFVAR_BRANDBASEURL, RTL_CONSTASCII_LENGTH(VARIABLE_BRANDBASEURL), true }
  };
  
  //_________________________________________________________________________________________________________________
@@@ -714,25 -717,13 +713,25 @@@ rtl::OUString SubstitutePathVariables::
  rtl::OUString SubstitutePathVariables::GetWorkPath() const
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen at sun.com", "SubstitutePathVariables::GetWorkPath" );
-     rtl::OUString aWorkPath;
+         rtl::OUString aWorkPath;
 -    ::comphelper::ConfigurationHelper::readDirectKey(
 +
 +    try
 +    {
 +        ::comphelper::ConfigurationHelper::readDirectKey(
                              m_xServiceManager,
 -                            ::rtl::OUString::createFromAscii("org.openoffice.Office.Paths"),
 -                            ::rtl::OUString::createFromAscii("Paths/Work"),
 -                            ::rtl::OUString::createFromAscii("WritePath"),
 +                            ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Paths")),
 +                            ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Paths/Work")),
 +                            ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("WritePath")),
                              ::comphelper::ConfigurationHelper::E_READONLY) >>= aWorkPath;
 +    }
 +    catch(RuntimeException &)
 +    {
 +    }
 +
 +    // fallback in case config layer does not return an useable work dir value.
 +    if (aWorkPath.getLength() < 1)
 +        aWorkPath = GetWorkVariableValue();
 +
      return aWorkPath;
  }
  
@@@ -740,21 -731,14 +739,21 @@@ rtl::OUString SubstitutePathVariables::
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen at sun.com", "SubstitutePathVariables::GetWorkVariableValue" );
      ::rtl::OUString aWorkPath;
 -    ::comphelper::ConfigurationHelper::readDirectKey(
 +
 +    try
 +    {
 +        ::comphelper::ConfigurationHelper::readDirectKey(
                              m_xServiceManager,
 -                            ::rtl::OUString::createFromAscii("org.openoffice.Office.Paths"),
 -                            ::rtl::OUString::createFromAscii("Variables"),
 -                            ::rtl::OUString::createFromAscii("Work"),
 +                            ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Paths")),
 +                            ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Variables")),
 +                            ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Work")),
                              ::comphelper::ConfigurationHelper::E_READONLY) >>= aWorkPath;
 +    }
 +    catch(RuntimeException &)
 +    {
 +    }
-     
-     // fallback to $HOME in  case platform dependend config layer does not return
+         
+     // fallback to $HOME in case platform dependend config layer does not return
      // an usuable work dir value.
      if (aWorkPath.getLength() < 1)
      {
@@@ -1188,21 -1182,20 +1197,18 @@@ void SubstitutePathVariables::SetPredef
      if( aState == ::utl::Bootstrap::PATH_EXISTS ) {
          aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USERPATH ] = ConvertOSLtoUCBURL( sVal );
      }
-     // We use to have a LOG_ERROR here in an else branch, but that
-     // always fired in some unit tests, and if you then just ignored
-     // it, nothing bad happened, so it seems fairly pointless.
  
      // Set $(inst), $(instpath), $(insturl)
-     aPreDefPathVariables.m_FixedVar[ PREDEFVAR_INSTURL ]	= aPreDefPathVariables.m_FixedVar[ PREDEFVAR_INSTPATH ];
-     aPreDefPathVariables.m_FixedVar[ PREDEFVAR_INST ]		= aPreDefPathVariables.m_FixedVar[ PREDEFVAR_INSTPATH ];
+     aPreDefPathVariables.m_FixedVar[ PREDEFVAR_INSTURL ]    = aPreDefPathVariables.m_FixedVar[ PREDEFVAR_INSTPATH ];
+     aPreDefPathVariables.m_FixedVar[ PREDEFVAR_INST ]       = aPreDefPathVariables.m_FixedVar[ PREDEFVAR_INSTPATH ];
 -    // --> PB 2004-10-27 #i32656# - new variable of hierachy service
 +    // New variable of hierachy service (#i32656#)
      aPreDefPathVariables.m_FixedVar[ PREDEFVAR_BASEINSTURL ]= aPreDefPathVariables.m_FixedVar[ PREDEFVAR_INSTPATH ];
 -    // <--
  
      // Set $(user), $(userpath), $(userurl)
-     aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USERURL ]	= aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USERPATH ];
-     aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USER ]		= aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USERPATH ];
+     aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USERURL ]    = aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USERPATH ];
+     aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USER ]       = aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USERPATH ];
 -    // --> PB 2004-11-11 #i32656# - new variable of hierachy service
 +    // New variable of hierachy service (#i32656#)
      aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USERDATAURL ]= aPreDefPathVariables.m_FixedVar[ PREDEFVAR_USERPATH ];
 -    // <--
  
      // Detect the program directory
      // Set $(prog), $(progpath), $(progurl)
diff --cc scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java
index e7bce06,ae3bf0e..ca7cfdd
mode 100755,100644..100755
--- a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java
+++ b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java
diff --cc scripting/java/com/sun/star/script/framework/provider/javascript/ScriptEditorForJavaScript.java
index dde0286,628bf0d..a8c3ebf
mode 100755,100644..100755
--- a/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptEditorForJavaScript.java
+++ b/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptEditorForJavaScript.java
diff --cc sfx2/inc/sfx2/module.hxx
index bef647e,ee18fff..dcfab09
mode 100755,100644..100755
--- a/sfx2/inc/sfx2/module.hxx
+++ b/sfx2/inc/sfx2/module.hxx
@@@ -96,8 -101,17 +100,16 @@@ public
  
      static SfxModule*           GetActiveModule( SfxViewFrame* pFrame=NULL );
      static FieldUnit			GetCurrentFieldUnit();
+     /** retrieves the field unit of the module belonging to the document displayed in the given frame
+ 
+         Effectively, this method looks up the SfxViewFrame belonging to the given XFrame, then the SfxModule belonging to
+         the document in this frame, then this module's field unit.
+ 
+         Failures in any of those steps are reported as assertion in non-product builds, and then FUNIT_100TH_MM is returned.
+      */
+     static FieldUnit            GetModuleFieldUnit( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > const & i_frame );
      FieldUnit					GetFieldUnit() const;
  
 -//#if 0 // _SOLAR__PRIVATE
      SAL_DLLPRIVATE static SfxModuleArr_Impl& GetModules_Impl();
      SAL_DLLPRIVATE static void DestroyModules_Impl();
      SAL_DLLPRIVATE SfxTbxCtrlFactArr_Impl* GetTbxCtrlFactories_Impl() const;
diff --cc sfx2/qa/unoapi/makefile.mk
index 0000000,ea91ba4..ea91ba4
mode 000000,100644..100755
--- a/sfx2/qa/unoapi/makefile.mk
+++ b/sfx2/qa/unoapi/makefile.mk
diff --cc sfx2/source/appl/module.cxx
index e057035,abccd8b..1b1c84c
mode 100755,100644..100755
--- a/sfx2/source/appl/module.cxx
+++ b/sfx2/source/appl/module.cxx
diff --cc sfx2/source/doc/SfxDocumentMetaData.cxx
index e4862ae,3a7f67f..82e6afe
mode 100755,100644..100755
--- a/sfx2/source/doc/SfxDocumentMetaData.cxx
+++ b/sfx2/source/doc/SfxDocumentMetaData.cxx
@@@ -1210,24 -1170,49 +1209,49 @@@ void SAL_CALL SfxDocumentMetaData::init
      if (!m_xParent.is()) {
          // all this create/append stuff may throw DOMException
          try {
-             css::uno::Reference<css::xml::dom::XElement> xRElem(
-                 i_xDoc->createElementNS(
+             css::uno::Reference<css::xml::dom::XElement> xRElem;
+             css::uno::Reference<css::xml::dom::XNode> xNode(
+                 i_xDoc->getFirstChild());
+             while (xNode.is()) {
+                 if (css::xml::dom::NodeType_ELEMENT_NODE ==xNode->getNodeType())
+                 {
+                     if (xNode->getNamespaceURI().equalsAscii(s_nsODF) &&
+                         xNode->getLocalName().equalsAscii("document-meta"))
+                     {
+                         xRElem.set(xNode, css::uno::UNO_QUERY_THROW);
+                         break;
+                     }
+                     else
+                     {
+                         OSL_TRACE("SfxDocumentMetaData::init(): "
+                                 "deleting unexpected root element: %s",
+                             ::rtl::OUStringToOString(xNode->getLocalName(),
+                                 RTL_TEXTENCODING_UTF8).getStr());
+                         i_xDoc->removeChild(xNode);
+                         xNode = i_xDoc->getFirstChild(); // start over
+                     }
+                 } else {
+                     xNode = xNode->getNextSibling();
+                 }
+             }
+             if (!xRElem.is()) {
+                 xRElem = i_xDoc->createElementNS(
                      ::rtl::OUString::createFromAscii(s_nsODF),
-                     ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("office:document-meta"))));
-             css::uno::Reference<css::xml::dom::XNode> xRNode(xRElem,
-                 css::uno::UNO_QUERY_THROW);
-             // NB: the following is a _bad_idea_ with our DOM implementation
-             //     do _not_ create attributes with xmlns prefix!
 -                    ::rtl::OUString::createFromAscii("office:document-meta"));
++                    ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("office:document-meta")));
+                 css::uno::Reference<css::xml::dom::XNode> xRNode(xRElem,
+                     css::uno::UNO_QUERY_THROW);
+                 i_xDoc->appendChild(xRNode);
+             }
              xRElem->setAttributeNS(::rtl::OUString::createFromAscii(s_nsODF),
 -                        ::rtl::OUString::createFromAscii("office:version"),
 -                        ::rtl::OUString::createFromAscii("1.0"));
 +                        ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("office:version")),
 +                        ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("1.0")));
-             i_xDoc->appendChild(xRNode);
+             // does not exist, otherwise m_xParent would not be null
              css::uno::Reference<css::xml::dom::XNode> xParent (
                  i_xDoc->createElementNS(
                      ::rtl::OUString::createFromAscii(s_nsODF),
 -                    ::rtl::OUString::createFromAscii("office:meta")),
 +                    ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("office:meta"))),
              css::uno::UNO_QUERY_THROW);
-             xRNode->appendChild(xParent);
+             xRElem->appendChild(xParent);
              m_xParent = xParent;
          } catch (css::xml::dom::DOMException & e) {
              css::uno::Any a(e);
diff --cc sfx2/source/doc/objxtor.cxx
index 84a4025,4d22d38..57c1eb2
mode 100755,100644..100755
--- a/sfx2/source/doc/objxtor.cxx
+++ b/sfx2/source/doc/objxtor.cxx
@@@ -934,15 -920,7 +934,10 @@@ void SfxObjectShell::SetCurrentComponen
      BasicManager* pAppMgr = SFX_APP()->GetBasicManager();
      s_xCurrentComponent = _rxComponent;
      if ( pAppMgr )
 +    {
 +        lcl_UpdateAppBasicDocVars( _rxComponent );
          pAppMgr->SetGlobalUNOConstant( "ThisComponent", makeAny( _rxComponent ) );
 +    }
- 
- #if OSL_DEBUG_LEVEL > 0
-     const char* pComponentImplName = _rxComponent.get() ? typeid( *_rxComponent.get() ).name() : "void";
-     OSL_TRACE( "current component is a %s\n", pComponentImplName );
- #endif
  }
  
  Reference< XInterface > SfxObjectShell::GetCurrentComponent()
diff --cc svx/source/form/fmundo.cxx
index bddd8ef,435c8f7..1eac0ad
mode 100755,100644..100755
--- a/svx/source/form/fmundo.cxx
+++ b/svx/source/form/fmundo.cxx
diff --cc svx/source/stbctrls/pszctrl.cxx
index 54d0220,463cb6c..05400a5
mode 100755,100644..100755
--- a/svx/source/stbctrls/pszctrl.cxx
+++ b/svx/source/stbctrls/pszctrl.cxx
diff --cc svx/source/tbxctrls/itemwin.cxx
index 9852f9a,bcbd617..eed8194
mode 100755,100644..100755
--- a/svx/source/tbxctrls/itemwin.cxx
+++ b/svx/source/tbxctrls/itemwin.cxx
diff --cc sysui/desktop/icons/makefile.mk
index ac32cdb,ce5b0b7..ce5b0b7
mode 100755,100644..100755
--- a/sysui/desktop/icons/makefile.mk
+++ b/sysui/desktop/icons/makefile.mk
diff --cc sysui/prj/build.lst
index b5f26eb,097cae9..097cae9
mode 100755,100644..100755
--- a/sysui/prj/build.lst
+++ b/sysui/prj/build.lst
diff --cc sysui/prj/d.lst
index c6019ce,918ee8b..918ee8b
mode 100755,100644..100755
--- a/sysui/prj/d.lst
+++ b/sysui/prj/d.lst
diff --cc ucb/source/ucp/tdoc/tdoc_docmgr.cxx
index cfa4c67,c78ce26..0b58d60
mode 100755,100644..100755
--- a/ucb/source/ucp/tdoc/tdoc_docmgr.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_docmgr.cxx
diff --cc xmlhelp/source/com/sun/star/help/HelpIndexer.java
index 0c03265,eb909d3..eb909d3
mode 100755,100644..100755
--- a/xmlhelp/source/com/sun/star/help/HelpIndexer.java
+++ b/xmlhelp/source/com/sun/star/help/HelpIndexer.java
diff --cc xmlhelp/source/cxxhelp/provider/databases.cxx
index 2d0bcac,a82b33b..cc9f937
--- a/xmlhelp/source/cxxhelp/provider/databases.cxx
+++ b/xmlhelp/source/cxxhelp/provider/databases.cxx
@@@ -644,29 -638,34 +641,25 @@@ Db* Databases::getBerkeley( const rtl::
      if( aPair.second && ! it->second )
      {
          Db* table = new Db();
 -        
 +
-         rtl::OUString fileNameOU;
+         rtl::OUString fileURL;
          if( pExtensionPath )
-         {
-             rtl::OUString aExpandedURL = expandURL( *pExtensionPath );
-             aExpandedURL += Language + dbFileName;
-             osl::FileBase::getSystemPathFromFileURL( aExpandedURL, fileNameOU );
-         }
+             fileURL = expandURL(*pExtensionPath) + Language + dbFileName;
          else
-             fileNameOU = getInstallPathAsSystemPath() + key;
- 
+             fileURL = getInstallPathAsURL() + key;
  
-         rtl::OString fileName( fileNameOU.getStr(),fileNameOU.getLength(),osl_getThreadTextEncoding() );
- 
-         rtl::OUString fileNameDBHelp( fileNameOU );
+         rtl::OUString fileNameDBHelp( fileURL );
+         //Extensions always use the new format
          if( pExtensionPath != NULL )
 -            fileNameDBHelp += rtl::OUString::createFromAscii( "_" );
 +            fileNameDBHelp += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "_" ));
+         //SimpleFileAccess takes file URLs as arguments!!! Using filenames works accidentally but
+         //fails for example when using long path names on Windows (starting with \\?\)
          if( m_xSFA->exists( fileNameDBHelp ) )
          {
              DBHelp* pDBHelp = new DBHelp( fileNameDBHelp, m_xSFA );
              table->setDBHelp( pDBHelp );
 -
 -#ifdef TEST_DBHELP
 -            bool bSuccess;
 -            bool bOldDbAccess = false;
 -            bSuccess = pDBHelp->testAgainstDb( fileURL, bOldDbAccess );
 -
 -            bOldDbAccess = true;
 -            bSuccess = pDBHelp->testAgainstDb( fileURL, bOldDbAccess );
 -#endif
          }
-         else if( table->open( 0,fileName.getStr(),0,DB_BTREE,DB_RDONLY,0644 ) )
+         else if( table->open( 0,fileURL, DB_BTREE,DB_RDONLY,0644 ) )
          {
              table->close( 0 );
              delete table;
@@@ -944,19 -943,15 +937,15 @@@ KeywordInfo* Databases::getKeyword( con
          std::vector<KeywordInfo::KeywordElement> aVector;
  
          KeyDataBaseFileIterator aDbFileIt( m_xContext, *this, Database, Language );
-         rtl::OUString fileNameOU;
+         rtl::OUString fileURL;
          bool bExtension = false;
-         while( (fileNameOU = aDbFileIt.nextDbFile( bExtension )).getLength() > 0 )
+         while( (fileURL = aDbFileIt.nextDbFile( bExtension )).getLength() > 0 )
          {
-             rtl::OString fileName( fileNameOU.getStr(),
-                                    fileNameOU.getLength(),
-                                    osl_getThreadTextEncoding() );
- 
              Db table;
  
-             rtl::OUString fileNameDBHelp( fileNameOU );
+             rtl::OUString fileNameDBHelp( fileURL );
              if( bExtension )
 -                fileNameDBHelp += rtl::OUString::createFromAscii( "_" );
 +                fileNameDBHelp += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "_" ));
              if( m_xSFA->exists( fileNameDBHelp ) )
              {
                  DBHelp aDBHelp( fileNameDBHelp, m_xSFA );
@@@ -999,9 -994,20 +988,9 @@@
                      if( pDBHelp != NULL )
                          pDBHelp->releaseHashMap();
                  }
 -
 -#ifdef TEST_DBHELP
 -                bool bSuccess;
 -                bool bOldDbAccess = false;
 -                bSuccess = aDBHelp.testAgainstDb( fileURL, bOldDbAccess );
 -
 -                bOldDbAccess = true;
 -                bSuccess = aDBHelp.testAgainstDb( fileURL, bOldDbAccess );
 -
 -                int nDummy = 0;
 -#endif
              }
          
-             else if( 0 == table.open( 0,fileName.getStr(),0,DB_BTREE,DB_RDONLY,0644 ) )
+             else if( 0 == table.open( 0,fileURL,DB_BTREE,DB_RDONLY,0644 ) )
              {
                  Db* idmap = getBerkeley( Database,Language );
                  
@@@ -1862,10 -1866,10 +1852,10 @@@ rtl::OUString KeyDataBaseFileIterator::
          switch( m_eState )
          {
              case INITIAL_MODULE:
 -                aRetFile = 
 +                aRetFile =
-                     m_rDatabases.getInstallPathAsSystemPath() +
+                     m_rDatabases.getInstallPathAsURL() +
                      m_rDatabases.processLang( m_aLanguage ) + aSlash + m_aInitialModule +
 -                    rtl::OUString::createFromAscii( ".key" );
 +                    rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ".key" ));
  
                  o_rbExtension = false;
  
@@@ -1925,12 -1930,9 +1916,9 @@@ rtl::OUString KeyDataBaseFileIterator::
      ( Reference< deployment::XPackage > xPackage )
  {
      rtl::OUString aExpandedURL =
 -        implGetFileFromPackage( rtl::OUString::createFromAscii( ".key" ), xPackage );
 +        implGetFileFromPackage( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ".key" )), xPackage );
  
-     rtl::OUString aRetFile;
-     osl::FileBase::getSystemPathFromFileURL( aExpandedURL, aRetFile );
- 
-     return aRetFile;
+     return aExpandedURL;
  }
  
  
diff --cc xmlhelp/source/cxxhelp/provider/databases.hxx
index 67c5737,8876da2..2e09a42
mode 100755,100644..100755
--- a/xmlhelp/source/cxxhelp/provider/databases.hxx
+++ b/xmlhelp/source/cxxhelp/provider/databases.hxx
diff --cc xmlhelp/source/cxxhelp/provider/db.cxx
index c6fae9f,8b16197..68717ec
--- a/xmlhelp/source/cxxhelp/provider/db.cxx
+++ b/xmlhelp/source/cxxhelp/provider/db.cxx
@@@ -36,6 -35,12 +36,8 @@@
  
  #include "com/sun/star/io/XSeekable.hpp"
  
+ #include "osl/file.hxx"
+ #include "osl/thread.hxx"
 -#ifdef TEST_DBHELP
 -#include <osl/time.h>
 -#endif
 -
  using namespace com::sun::star;
  using namespace com::sun::star::uno;
  using namespace com::sun::star::io;
diff --cc xmloff/source/chart/SchXMLExport.cxx
index 9921ab4,d3fadce..7d74350
mode 100755,100644..100755
--- a/xmloff/source/chart/SchXMLExport.cxx
+++ b/xmloff/source/chart/SchXMLExport.cxx
diff --cc xmloff/source/chart/SchXMLSeries2Context.cxx
index 8b0c12f,4730a9d..14b330f
mode 100755,100644..100755
--- a/xmloff/source/chart/SchXMLSeries2Context.cxx
+++ b/xmloff/source/chart/SchXMLSeries2Context.cxx
diff --cc xmloff/source/chart/SchXMLTools.cxx
index 6ef1630,1a1f24b..b713eca
mode 100755,100644..100755
--- a/xmloff/source/chart/SchXMLTools.cxx
+++ b/xmloff/source/chart/SchXMLTools.cxx
@@@ -413,10 -416,10 +413,10 @@@ Reference< chart2::data::XDataSequence 
      }
      catch( const lang::IllegalArgumentException & )
      {
 -        DBG_ERROR( "could not create data sequence" );
 +        OSL_FAIL( "could not create data sequence" );
      }
  
-     if( !xRet.is() && !xChartDoc->hasInternalDataProvider() )
+     if( !xRet.is() && !xChartDoc->hasInternalDataProvider() && rRange.getLength() )
      {
          //#i103911# switch to internal data in case the parent cannot provide the requested data
          xChartDoc->createInternalDataProvider( sal_True /* bCloneExistingData */ );
diff --cc xmloff/source/core/xmlexp.cxx
index 901ac97,18a07c3..064fb96
mode 100755,100644..100755
--- a/xmloff/source/core/xmlexp.cxx
+++ b/xmloff/source/core/xmlexp.cxx
@@@ -113,11 -112,13 +113,11 @@@ using namespace ::com::sun::star::xml::
  using namespace ::com::sun::star::io;
  using namespace ::xmloff::token;
  
 -sal_Char __READONLY_DATA sXML_1_1[] = "1.1";
 -sal_Char __READONLY_DATA sXML_1_2[] = "1.2";
 -
 -const sal_Char *sOpenOfficeOrgProject ="OpenOffice.org_project";
 +sal_Char const sXML_1_1[] = "1.1";
 +sal_Char const sXML_1_2[] = "1.2";
  
- const sal_Char s_grddl_xsl[] =
-     "http://docs.oasis-open.org/office/1.2/xslt/odf2rdf.xsl";
+ // #i115030#: the XSLT is not finished, and not available via HTTP
+ const sal_Char s_grddl_xsl[] = "http://FIXME";
  
  #define LOGFILE_AUTHOR "mb93740"
  
@@@ -1272,8 -1329,9 +1274,9 @@@ lcl_AddGrddl(SvXMLExport & rExport, con
      if (EXPORT_SETTINGS != nExportMode) // meta, content, styles
      {
          rExport.AddAttribute( XML_NAMESPACE_GRDDL, XML_TRANSFORMATION,
 -            OUString::createFromAscii(s_grddl_xsl) );
 +            OUString(RTL_CONSTASCII_USTRINGPARAM(s_grddl_xsl)) );
      }
+ #endif
  }
  
  sal_uInt32 SvXMLExport::exportDoc( enum ::xmloff::token::XMLTokenEnum eClass )
diff --cc xmloff/source/draw/shapeexport.cxx
index f6541a7,c04cd64..b6cae94
mode 100755,100644..100755
--- a/xmloff/source/draw/shapeexport.cxx
+++ b/xmloff/source/draw/shapeexport.cxx
diff --cc xmloff/source/style/xmlnume.cxx
index 8f048d4,7f434d0..a472d61
mode 100755,100644..100755
--- a/xmloff/source/style/xmlnume.cxx
+++ b/xmloff/source/style/xmlnume.cxx
diff --cc xmloff/source/style/xmlnumi.cxx
index f434f00,cbd90e2..81b65c2
mode 100755,100644..100755
--- a/xmloff/source/style/xmlnumi.cxx
+++ b/xmloff/source/style/xmlnumi.cxx
diff --cc xmloff/source/text/XMLAutoTextEventExport.cxx
index 90279ee,6dec9cb..3d0d08f
mode 100755,100644..100755
--- a/xmloff/source/text/XMLAutoTextEventExport.cxx
+++ b/xmloff/source/text/XMLAutoTextEventExport.cxx
diff --cc xmloff/source/text/txtprhdl.cxx
index ed9810d,710b3e6..dd774e9

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list