[Libreoffice-commits] core.git: Branch 'feature/cib_contract136' - 15 commits - configure.ac download.lst external/expat external/graphite external/icu external/libxml2 external/python3 sc/inc sc/Library_sc.mk sc/source

Thorsten Behrens Thorsten.Behrens at CIB.de
Fri Feb 9 12:36:46 UTC 2018


 configure.ac                                                                       |    2 
 download.lst                                                                       |   11 
 external/expat/StaticLibrary_expat.mk                                              |    1 
 external/expat/StaticLibrary_expat_x64.mk                                          |    1 
 external/expat/UnpackedTarball_expat.mk                                            |    1 
 external/graphite/graphite2.win64.patch.1                                          |   10 
 external/icu/UnpackedTarball_icu.mk                                                |    1 
 external/icu/icu4c-changeset-40324.patch.1                                         |   11 
 external/libxml2/0001-Fix-buffer-size-checks-in-xmlSnprintfElementContent.patch.1  |  116 
 external/libxml2/0001-Fix-handling-of-parameter-entity-references.patch.1          |  287 ++
 external/libxml2/0001-Fix-type-confusion-in-xmlValidateOneNamespace.patch.1        |   43 
 external/libxml2/0001-Increase-buffer-space-for-port-in-HTTP-redirect-supp.patch.1 |   31 
 external/libxml2/0001-Prevent-unwanted-external-entity-reference.patch.1           |   35 
 external/libxml2/UnpackedTarball_xml2.mk                                           |    5 
 external/python3/ExternalPackage_python3.mk                                        |    1 
 external/python3/UnpackedTarball_python3.mk                                        |   15 
 external/python3/python-3.3.0-darwin.patch.1                                       |    4 
 external/python3/python-3.3.3-py17797.patch.1                                      |   49 
 external/python3/python-3.5.0-tcltk.disable.patch                                  |   16 
 external/python3/python-3.5.4-msvc-disable.patch.1                                 |   18 
 external/python3/python-3.5.4-ssl.patch.1                                          |   87 
 external/python3/python-lsan.patch.0                                               |   19 
 external/python3/python-vc2013.patch.1                                             | 1213 ----------
 external/python3/ubsan.patch.0                                                     |   27 
 sc/Library_sc.mk                                                                   |    1 
 sc/inc/document.hxx                                                                |    8 
 sc/inc/documentlinkmgr.hxx                                                         |    6 
 sc/source/core/data/conditio.cxx                                                   |    6 
 sc/source/core/data/documen2.cxx                                                   |    2 
 sc/source/core/data/documen8.cxx                                                   |   23 
 sc/source/core/data/formulacell.cxx                                                |    7 
 sc/source/core/inc/webservicelink.hxx                                              |   49 
 sc/source/core/tool/interpr2.cxx                                                   |    8 
 sc/source/core/tool/interpr7.cxx                                                   |  102 
 sc/source/core/tool/rangenam.cxx                                                   |    8 
 sc/source/core/tool/webservicelink.cxx                                             |  106 
 sc/source/filter/excel/excform.cxx                                                 |    1 
 sc/source/filter/excel/excform8.cxx                                                |    1 
 sc/source/filter/excel/impop.cxx                                                   |    1 
 sc/source/filter/excel/xicontent.cxx                                               |    6 
 sc/source/filter/excel/xiname.cxx                                                  |    3 
 sc/source/filter/oox/condformatbuffer.cxx                                          |    2 
 sc/source/filter/oox/defnamesbuffer.cxx                                            |    2 
 sc/source/filter/oox/formulabuffer.cxx                                             |    4 
 sc/source/ui/docshell/docsh4.cxx                                                   |    4 
 sc/source/ui/docshell/documentlinkmgr.cxx                                          |   20 
 sc/source/ui/view/tabvwsh4.cxx                                                     |    2 
 47 files changed, 938 insertions(+), 1438 deletions(-)

New commits:
commit e3dc9b6fd0d27d2ef3932764ac54958962e8f3d8
Author: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Date:   Fri Feb 9 13:35:20 2018 +0100

    Bump version to 5.2.7.4
    
    Change-Id: Ia504bfb67d63c6bba117d85db2dab92e9dde5974

diff --git a/configure.ac b/configure.ac
index f366899e0555..90c2301cac23 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,7 +9,7 @@ dnl in order to create a configure script.
 # several non-alphanumeric characters, those are split off and used only for the
 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
 
-AC_INIT([LibreOffice],[5.2.7.3],[],[],[http://documentfoundation.org/])
+AC_INIT([LibreOffice],[5.2.7.4],[],[],[http://documentfoundation.org/])
 
 AC_PREREQ([2.59])
 
commit f1284625d2c95c0e82b886347b3df5ed59cc3524
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Jan 29 18:19:33 2018 +0100

    CheckLinkFormulaNeedingCheck() for named expressions
    
     This is a combination of 3 commits.
    
    CheckLinkFormulaNeedingCheck() for .ods named expressions
    
    This is specifically necessary for named expressions that are used
    in conditional format formulas, for which RPN is generated at a
    later stage, not during import.
    
    (cherry picked from commit eae9648e99be53ba441d9d8207aac6f3ce211ef2)
    
    CheckLinkFormulaNeedingCheck() for .xls named expressions
    
    (cherry picked from commit 8512f13c42ae3fbb287a555616fe10ff04295616)
    
    CheckLinkFormulaNeedingCheck() for .xlsx named expressions
    
    (cherry picked from commit a1f933ee2b9e23a505d937035821e9571cf4119c)
    
     Conflicts:
            sc/source/filter/oox/defnamesbuffer.cxx
    
    e03cb5767c34f8157a492a6d6c3b0700d065052d
    217c89822ab477a6c383d170ae739e44efd10fa3
    
    Change-Id: I54ab8dc14f81d6b18b0d17f448187d19d8e396fc
    Reviewed-on: https://gerrit.libreoffice.org/48858
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx
index 7626e16ae5f6..d147b101de61 100644
--- a/sc/source/core/tool/rangenam.cxx
+++ b/sc/source/core/tool/rangenam.cxx
@@ -64,9 +64,14 @@ ScRangeData::ScRangeData( ScDocument* pDok,
                 mnMaxCol    (-1)
 {
     if (!rSymbol.isEmpty())
-        CompileRangeData( rSymbol, pDoc->IsImportingXML());
+    {
         // Let the compiler set an error on unknown names for a subsequent
         // CompileUnresolvedXML().
+        const bool bImporting = pDoc->IsImportingXML();
+        CompileRangeData( rSymbol, bImporting);
+        if (bImporting)
+            pDoc->CheckLinkFormulaNeedingCheck( *pCode);
+    }
     else
     {
         // #i63513#/#i65690# don't leave pCode as NULL.
@@ -199,6 +204,7 @@ void ScRangeData::CompileUnresolvedXML( sc::CompileFormulaContext& rCxt )
         // Don't let the compiler set an error for unknown names on final
         // compile, errors are handled by the interpreter thereafter.
         CompileRangeData( aSymbol, false);
+        rCxt.getDoc()->CheckLinkFormulaNeedingCheck( *pCode);
     }
 }
 
diff --git a/sc/source/filter/excel/xiname.cxx b/sc/source/filter/excel/xiname.cxx
index d09661503c6b..8decfc00e8e0 100644
--- a/sc/source/filter/excel/xiname.cxx
+++ b/sc/source/filter/excel/xiname.cxx
@@ -265,7 +265,10 @@ void XclImpName::InsertName(const ScTokenArray* pArray)
         }
     }
     if (pData)
+    {
+        GetDoc().CheckLinkFormulaNeedingCheck( *pData->GetCode());
         mpScData = pData;               // cache for later use
+    }
 }
 
 XclImpNameManager::XclImpNameManager( const XclImpRoot& rRoot ) :
diff --git a/sc/source/filter/oox/defnamesbuffer.cxx b/sc/source/filter/oox/defnamesbuffer.cxx
index 9de5851e3978..586511d1d25a 100644
--- a/sc/source/filter/oox/defnamesbuffer.cxx
+++ b/sc/source/filter/oox/defnamesbuffer.cxx
@@ -39,6 +39,7 @@
 #include "tokenarray.hxx"
 #include "tokenuno.hxx"
 #include "compiler.hxx"
+#include "document.hxx"
 
 namespace oox {
 namespace xls {
@@ -339,6 +340,7 @@ std::unique_ptr<ScTokenArray> DefinedName::getScTokens(
     // after, a resulting error must be reset.
     sal_uInt16 nErr = pArray->GetCodeError();
     aCompiler.CompileTokenArray();
+    getScDocument().CheckLinkFormulaNeedingCheck( *pArray);
     pArray->DelRPN();
     pArray->SetCodeError(nErr);
 
commit fb8d11df96e7aa8118e49487bea965e4749763b4
Author: Eike Rathke <erack at redhat.com>
Date:   Thu Jan 25 13:20:27 2018 +0100

    CheckLinkFormulaNeedingCheck() for conditional format expressions
    
     This is a combination of 4 commits.
    
    Prepare CheckLinkFormulaNeedingCheck() to use either RPN or tokenized code
    
    Conditional format formulas aren't finally compiled until needed
    so the check will have to operate on the tokenized expression
    instead of RPN code.
    
    (cherry picked from commit faa0305ba3d0dc698fce4915d4f3a1fb52422380)
    
    CheckLinkFormulaNeedingCheck() for .ods conditional format expressions
    
    (cherry picked from commit 2930ba2ac5d9423f2848b968edcd8ddc71966186)
    
    CheckLinkFormulaNeedingCheck() for .xlsx conditional format expressions
    
    (cherry picked from commit fef24d9f999ee54d7936900485d97ff26656f517)
    
    CheckLinkFormulaNeedingCheck() for .xls conditional format expressions
    
    (cherry picked from commit af2a2a0c72db312902e466c36697b5c198041e82)
    
    45eb1ab5efa0ec9da2663f20427d2474ce300826
    31ede1a23223a798141a0891deeabd8cf88fff58
    afa112cc591b411d80ead48bf726788d361f6eb3
    
    Change-Id: I68837e9bd33f125ab47b10b1a6fa18175abd1627
    Reviewed-on: https://gerrit.libreoffice.org/48719
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index 7fd1ef53ac69..ba2767c27981 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -521,6 +521,12 @@ void ScConditionEntry::CompileXML()
     Compile( GetExpression(aSrcPos, 0, 0, eTempGrammar1),
              GetExpression(aSrcPos, 1, 0, eTempGrammar2),
              aStrNmsp1, aStrNmsp2, eTempGrammar1, eTempGrammar2, true );
+
+    // Importing ocDde/ocWebservice?
+    if (pFormula1)
+        mpDoc->CheckLinkFormulaNeedingCheck(*pFormula1);
+    if (pFormula2)
+        mpDoc->CheckLinkFormulaNeedingCheck(*pFormula2);
 }
 
 void ScConditionEntry::SetSrcString( const OUString& rNew )
diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx
index 185a2aa85f06..deb908f5f496 100644
--- a/sc/source/core/data/documen8.cxx
+++ b/sc/source/core/data/documen8.cxx
@@ -1159,8 +1159,21 @@ void ScDocument::CheckLinkFormulaNeedingCheck( const ScTokenArray& rCode )
     if (HasLinkFormulaNeedingCheck())
         return;
 
-    if (rCode.HasOpCodeRPN(ocDde) || rCode.HasOpCodeRPN(ocWebservice))
-        SetLinkFormulaNeedingCheck(true);
+    // Prefer RPN over tokenized formula if available.
+    if (rCode.GetCodeLen())
+    {
+        if (rCode.HasOpCodeRPN(ocDde) || rCode.HasOpCodeRPN(ocWebservice))
+            SetLinkFormulaNeedingCheck(true);
+    }
+    else if (rCode.GetLen())
+    {
+        if (rCode.HasOpCode(ocDde) || rCode.HasOpCode(ocWebservice))
+            SetLinkFormulaNeedingCheck(true);
+    }
+    else
+    {
+        assert(!"called with empty ScTokenArray");
+    }
 }
 
 // TimerDelays etc.
diff --git a/sc/source/filter/excel/xicontent.cxx b/sc/source/filter/excel/xicontent.cxx
index 05a142d8b1f5..a863f9beda09 100644
--- a/sc/source/filter/excel/xicontent.cxx
+++ b/sc/source/filter/excel/xicontent.cxx
@@ -663,7 +663,10 @@ void XclImpCondFormat::ReadCF( XclImpStream& rStrm )
         rFmlaConv.Convert( pTokArr, rStrm, nFmlaSize1, false, FT_CondFormat );
         // formula converter owns pTokArr -> create a copy of the token array
         if( pTokArr )
+        {
             xTokArr1.reset( pTokArr->Clone() );
+            GetDocRef().CheckLinkFormulaNeedingCheck( *xTokArr1);
+        }
     }
 
     ::std::unique_ptr< ScTokenArray > pTokArr2;
@@ -674,7 +677,10 @@ void XclImpCondFormat::ReadCF( XclImpStream& rStrm )
         rFmlaConv.Convert( pTokArr, rStrm, nFmlaSize2, false, FT_CondFormat );
         // formula converter owns pTokArr -> create a copy of the token array
         if( pTokArr )
+        {
             pTokArr2.reset( pTokArr->Clone() );
+            GetDocRef().CheckLinkFormulaNeedingCheck( *pTokArr2);
+        }
     }
 
     // *** create the Calc conditional formatting ***
diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx
index 1c1eadd88518..8526d7ffea3a 100644
--- a/sc/source/filter/oox/condformatbuffer.cxx
+++ b/sc/source/filter/oox/condformatbuffer.cxx
@@ -875,11 +875,13 @@ void CondFormatRule::finalizeImport()
         {
             pTokenArray2.reset(new ScTokenArray());
             ScTokenConversion::ConvertToTokenArray( rDoc, *pTokenArray2.get(), maModel.maFormulas[ 1 ] );
+            rDoc.CheckLinkFormulaNeedingCheck( *pTokenArray2.get());
         }
 
         ScTokenArray aTokenArray;
         OUString aStyleName = getStyles().createDxfStyle( maModel.mnDxfId );
         ScTokenConversion::ConvertToTokenArray( rDoc, aTokenArray, maModel.maFormulas[ 0 ] );
+        rDoc.CheckLinkFormulaNeedingCheck( aTokenArray);
         ScCondFormatEntry* pNewEntry = new ScCondFormatEntry(eOperator,
                                             &aTokenArray, pTokenArray2.get(), &rDoc, aPos, aStyleName);
         mpFormat->AddEntry(pNewEntry);
commit 5bfd80a3df66a79c2234bb9a7075dfbf0f2b7ef7
Author: Eike Rathke <erack at redhat.com>
Date:   Wed Jan 17 22:22:55 2018 +0100

    CheckLinkFormulaNeedingCheck() for .xls and .xlsx formula cells
    
     This is a combination of 3 commits.
    
    Move implementation to CheckLinkFormulaNeedingCheck() for further reuse
    
    (cherry picked from commit 55e484c7bcd3ef218e08d3fd93f97bf98fd8cb7f)
    
    CheckLinkFormulaNeedingCheck() for .xlsx cell formulas
    
    (cherry picked from commit f96dbc3dd9c33202f75e29ef49d962386595995d)
    
    CheckLinkFormulaNeedingCheck() for .xls cell formulas
    
    (cherry picked from commit 6bc48275558c3f76c4da25eb8af3c48583ac5599)
    
    a6dd195f7eb4d43483e87eeca59f651e7bf2dcb8
    2587fbc4fec39b6f2c8e733331815a2953dee308
    
    Change-Id: I541d2b6e12a88371c064b901b00e71206ee0c18e
    Reviewed-on: https://gerrit.libreoffice.org/48143
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index f1eee3483d1d..ec1bf3cb176d 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1912,6 +1912,8 @@ public:
 
     bool            HasLinkFormulaNeedingCheck() const      { return bLinkFormulaNeedingCheck; }
     void            SetLinkFormulaNeedingCheck(bool bSet)   { bLinkFormulaNeedingCheck = bSet; }
+    /** Check token array and set link check if ocDde/ocWebservice is contained. */
+    SC_DLLPUBLIC void CheckLinkFormulaNeedingCheck( const ScTokenArray& rCode );
 
     static bool     CheckMacroWarn();
 
diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx
index a84c2d09a01e..185a2aa85f06 100644
--- a/sc/source/core/data/documen8.cxx
+++ b/sc/source/core/data/documen8.cxx
@@ -88,6 +88,7 @@
 #include "stringutil.hxx"
 #include <documentlinkmgr.hxx>
 #include <scopetools.hxx>
+#include <tokenarray.hxx>
 
 #include <memory>
 
@@ -1153,6 +1154,15 @@ void ScDocument::UpdateRefAreaLinks( UpdateRefMode eUpdateRefMode,
     }
 }
 
+void ScDocument::CheckLinkFormulaNeedingCheck( const ScTokenArray& rCode )
+{
+    if (HasLinkFormulaNeedingCheck())
+        return;
+
+    if (rCode.HasOpCodeRPN(ocDde) || rCode.HasOpCodeRPN(ocWebservice))
+        SetLinkFormulaNeedingCheck(true);
+}
+
 // TimerDelays etc.
 void ScDocument::KeyInput( const KeyEvent& )
 {
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index 7af4fb5cf1b0..b7d8031c6c65 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -1365,8 +1365,7 @@ void ScFormulaCell::CompileXML( sc::CompileFormulaContext& rCxt, ScProgress& rPr
 
     //  After loading, it must be known if ocDde/ocWebservice is in any formula
     //  (for external links warning, CompileXML is called at the end of loading XML file)
-    if (!pDocument->HasLinkFormulaNeedingCheck() && (pCode->HasOpCodeRPN(ocDde) || pCode->HasOpCodeRPN(ocWebservice)))
-        pDocument->SetLinkFormulaNeedingCheck(true);
+    pDocument->CheckLinkFormulaNeedingCheck(*pCode);
 
     //volatile cells must be added here for import
     if( pCode->IsRecalcModeAlways() || pCode->IsRecalcModeForced() ||
diff --git a/sc/source/filter/excel/excform.cxx b/sc/source/filter/excel/excform.cxx
index c3190550a68c..7fa06662194d 100644
--- a/sc/source/filter/excel/excform.cxx
+++ b/sc/source/filter/excel/excform.cxx
@@ -157,6 +157,7 @@ void ImportExcel::Formula(
     {
         pCell = new ScFormulaCell(&rDoc.getDoc(), aScPos, *pResult);
         pCell->GetCode()->WrapReference(aScPos, EXC_MAXCOL8, EXC_MAXROW8);
+        rDoc.getDoc().CheckLinkFormulaNeedingCheck( *pCell->GetCode());
         rDoc.getDoc().EnsureTable(aScPos.Tab());
         rDoc.setFormulaCell(aScPos, pCell);
         SetLastFormula(aScPos.Col(), aScPos.Row(), fCurVal, nXF, pCell);
diff --git a/sc/source/filter/excel/excform8.cxx b/sc/source/filter/excel/excform8.cxx
index bea8ba395a8c..b5c9fef46862 100644
--- a/sc/source/filter/excel/excform8.cxx
+++ b/sc/source/filter/excel/excform8.cxx
@@ -730,6 +730,7 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, XclImpStream& aIn,
                                         << nMerk0 << ocClose;
                                 aPool >> aStack;
                                 pExtName->CreateDdeData( GetDoc(), aApplic, aTopic );
+                                GetDoc().SetLinkFormulaNeedingCheck(true);
                             }
                         }
                         break;
diff --git a/sc/source/filter/excel/impop.cxx b/sc/source/filter/excel/impop.cxx
index 6d27232ffd61..1c25921705c4 100644
--- a/sc/source/filter/excel/impop.cxx
+++ b/sc/source/filter/excel/impop.cxx
@@ -867,6 +867,7 @@ void ImportExcel::Shrfmla()
 
     ScFormulaCell* pCell = new ScFormulaCell(pD, aPos, *pErgebnis);
     pCell->GetCode()->WrapReference(aPos, EXC_MAXCOL8, EXC_MAXROW8);
+    rDoc.getDoc().CheckLinkFormulaNeedingCheck( *pCell->GetCode());
     rDoc.getDoc().EnsureTable(aPos.Tab());
     rDoc.setFormulaCell(aPos, pCell);
     pCell->SetNeedNumberFormat(false);
diff --git a/sc/source/filter/oox/formulabuffer.cxx b/sc/source/filter/oox/formulabuffer.cxx
index 41c99f80062e..b139ac975240 100644
--- a/sc/source/filter/oox/formulabuffer.cxx
+++ b/sc/source/filter/oox/formulabuffer.cxx
@@ -228,6 +228,10 @@ void applyCellFormulas(
             continue;
 
         aCompiler.CompileTokenArray(); // Generate RPN tokens.
+
+        // Check if ocDde/ocWebservice is in any formula for external links warning.
+        rDoc.getDoc().CheckLinkFormulaNeedingCheck(*pCode);
+
         ScFormulaCell* pCell = new ScFormulaCell(&rDoc.getDoc(), aPos, pCode);
         rDoc.setFormulaCell(aPos, pCell);
         rCache.store(aPos, pCell);
commit 83ad81b3bd09e263c1f2551a6c3d2c6ea3659cc0
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Jan 11 20:43:28 2018 +0000

    handle ocWebservice similarly to ocDde
    
    might have too much in here seeing as we don't need to worry about
    ocWebservice calling into itself
    
    Reviewed-on: https://gerrit.libreoffice.org/47819
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    
    Conflicts:
            sc/source/core/tool/interpr7.cxx
            sc/source/ui/docshell/documentlinkmgr.cxx
            sc/source/core/tool/webservicelink.cxx
    
    Change-Id: I0145f38cc1c1f9ff514a496f7101d81cde9e7c67

diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index 0ef50c3b6b0f..22f316031e01 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -285,6 +285,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
     sc/source/core/tool/unitconv \
     sc/source/core/tool/userlist \
     sc/source/core/tool/viewopti \
+    sc/source/core/tool/webservicelink \
     sc/source/core/tool/zforauto \
     sc/source/filter/xml/datastreamimport \
     sc/source/filter/xml/XMLCalculationSettingsContext \
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index e937bc63dc28..f1eee3483d1d 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -447,7 +447,7 @@ private:
     // for detective update, is set for each change of a formula
     bool                bDetectiveDirty;
 
-    bool                bLinkFormulaNeedingCheck; // valid only after loading, for ocDde
+    bool                bLinkFormulaNeedingCheck; // valid only after loading, for ocDde and ocWebservice
 
     sal_uInt8               nAsianCompression;
     sal_uInt8               nAsianKerning;
diff --git a/sc/inc/documentlinkmgr.hxx b/sc/inc/documentlinkmgr.hxx
index d5d801a4aeb2..86dba66f2d3d 100644
--- a/sc/inc/documentlinkmgr.hxx
+++ b/sc/inc/documentlinkmgr.hxx
@@ -55,9 +55,9 @@ public:
     bool idleCheckLinks();
 
     bool hasDdeLinks() const;
-    bool hasDdeOrOleLinks() const;
+    bool hasDdeOrOleOrWebServiceLinks() const;
 
-    bool updateDdeOrOleLinks(vcl::Window* pWin);
+    bool updateDdeOrOleOrWebServiceLinks(vcl::Window* pWin);
 
     void updateDdeLink( const OUString& rAppl, const OUString& rTopic, const OUString& rItem );
 
@@ -65,7 +65,7 @@ public:
 
     void disconnectDdeLinks();
 private:
-    bool hasDdeOrOleLinks(bool bDde, bool bOle) const;
+    bool hasDdeOrOleOrWebServiceLinks(bool bDde, bool bOle, bool bWebService) const;
 };
 
 }
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index a8d6f5eba5a7..7af4fb5cf1b0 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -1363,9 +1363,9 @@ void ScFormulaCell::CompileXML( sc::CompileFormulaContext& rCxt, ScProgress& rPr
             bChanged = true;
     }
 
-    //  After loading, it must be known if ocDde is in any formula
+    //  After loading, it must be known if ocDde/ocWebservice is in any formula
     //  (for external links warning, CompileXML is called at the end of loading XML file)
-    if (!pDocument->HasLinkFormulaNeedingCheck() && pCode->HasOpCodeRPN(ocDde))
+    if (!pDocument->HasLinkFormulaNeedingCheck() && (pCode->HasOpCodeRPN(ocDde) || pCode->HasOpCodeRPN(ocWebservice)))
         pDocument->SetLinkFormulaNeedingCheck(true);
 
     //volatile cells must be added here for import
diff --git a/sc/source/core/inc/webservicelink.hxx b/sc/source/core/inc/webservicelink.hxx
new file mode 100644
index 000000000000..e61ebfdb4347
--- /dev/null
+++ b/sc/source/core/inc/webservicelink.hxx
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_SC_SOURCE_CORE_INC_WEBSERVICE_HXX
+#define INCLUDED_SC_SOURCE_CORE_INC_WEBSERVICE_HXX
+
+#include <address.hxx>
+#include <sfx2/lnkbase.hxx>
+#include <svl/broadcast.hxx>
+#include <types.hxx>
+
+class ScDocument;
+
+class ScWebServiceLink : public ::sfx2::SvBaseLink, public SvtBroadcaster
+{
+private:
+    ScDocument* pDoc;
+    OUString aURL; // connection/ link data
+    bool bHasResult; // is set aResult is useful
+    OUString aResult;
+
+public:
+    ScWebServiceLink(ScDocument* pD, const OUString& rURL);
+    virtual ~ScWebServiceLink() override;
+
+    // SvBaseLink override:
+    virtual ::sfx2::SvBaseLink::UpdateResult DataChanged(const OUString& rMimeType,
+                                                         const css::uno::Any& rValue) override;
+
+    // SvtBroadcaster override:
+    virtual void ListenersGone() override;
+
+    // for interpreter:
+
+    const OUString& GetResult() const { return aResult; }
+    bool HasResult() const { return bHasResult; }
+
+    const OUString& GetURL() const { return aURL; }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/sc/source/core/tool/interpr7.cxx b/sc/source/core/tool/interpr7.cxx
index 0d55e87db4f3..79281617b9d3 100644
--- a/sc/source/core/tool/interpr7.cxx
+++ b/sc/source/core/tool/interpr7.cxx
@@ -13,6 +13,7 @@
 #include "scmatrix.hxx"
 #include <rtl/strbuf.hxx>
 #include <formula/errorcodes.hxx>
+#include <sfx2/bindings.hxx>
 #include <svtools/miscopt.hxx>
 #include <tools/urlobj.hxx>
 
@@ -24,6 +25,10 @@
 #include <datastreamgettime.hxx>
 #include <dpobject.hxx>
 #include <document.hxx>
+#include <tokenarray.hxx>
+#include <webservicelink.hxx>
+
+#include <sc.hrc>
 
 #include <cstring>
 #include <memory>
@@ -229,6 +234,22 @@ void ScInterpreter::ScFilterXML()
     }
 }
 
+static ScWebServiceLink* lcl_GetWebServiceLink(const sfx2::LinkManager* pLinkMgr, const OUString& rURL)
+{
+    size_t nCount = pLinkMgr->GetLinks().size();
+    for (size_t i=0; i<nCount; ++i)
+    {
+        ::sfx2::SvBaseLink* pBase = pLinkMgr->GetLinks()[i].get();
+        if (ScWebServiceLink* pLink = dynamic_cast<ScWebServiceLink*>(pBase))
+        {
+            if (pLink->GetURL() == rURL)
+                return pLink;
+        }
+    }
+
+    return nullptr;
+}
+
 void ScInterpreter::ScWebservice()
 {
     sal_uInt8 nParamCount = GetByte();
@@ -236,7 +257,7 @@ void ScInterpreter::ScWebservice()
     {
         OUString aURI = GetString().getString();
 
-        if(aURI.isEmpty())
+        if (aURI.isEmpty())
         {
             PushError( formula::errNoValue );
             return;
@@ -246,52 +267,72 @@ void ScInterpreter::ScWebservice()
         INetProtocol eProtocol = aObj.GetProtocol();
         if (eProtocol != INetProtocol::Http && eProtocol != INetProtocol::Https)
         {
-            PushError( FormulaError::NoValue );
-            return;
-        }
-
-        uno::Reference< ucb::XSimpleFileAccess3 > xFileAccess( ucb::SimpleFileAccess::create( comphelper::getProcessComponentContext() ), uno::UNO_QUERY );
-        if(!xFileAccess.is())
-        {
             PushError( formula::errNoValue );
             return;
         }
 
-        uno::Reference< io::XInputStream > xStream;
-        try {
-            xStream = xFileAccess->openFileRead( aURI );
-        }
-        catch (...)
-        {
-            // don't let any exceptions pass
-            PushError( formula::errNoValue );
-            return;
-        }
-        if ( !xStream.is() )
+        if (!mpLinkManager)
         {
             PushError( formula::errNoValue );
             return;
         }
 
-        const sal_Int32 BUF_LEN = 8000;
-        uno::Sequence< sal_Int8 > buffer( BUF_LEN );
-        OStringBuffer aBuffer( 64000 );
+        // Need to reinterpret after loading (build links)
+        if (rArr.IsRecalcModeNormal())
+            rArr.SetExclusiveRecalcModeOnLoad();
+
+        //  while the link is not evaluated, idle must be disabled (to avoid circular references)
+        bool bOldEnabled = pDok->IsIdleEnabled();
+        pDok->EnableIdle(false);
+
+        // Get/ Create link object
+        ScWebServiceLink* pLink = lcl_GetWebServiceLink(mpLinkManager, aURI);
 
-        sal_Int32 nRead = 0;
-        while ( ( nRead = xStream->readBytes( buffer, BUF_LEN ) ) == BUF_LEN )
+        bool bWasError = (pMyFormulaCell && pMyFormulaCell->GetRawError() != 0);
+
+        if (!pLink)
         {
-            aBuffer.append( reinterpret_cast< const char* >( buffer.getConstArray() ), nRead );
-        }
+            pLink = new ScWebServiceLink(pDok, aURI);
+            mpLinkManager->InsertFileLink(*pLink, OBJECT_CLIENT_FILE, aURI);
+            if ( mpLinkManager->GetLinks().size() == 1 )                    // the first one?
+            {
+                SfxBindings* pBindings = pDok->GetViewBindings();
+                if (pBindings)
+                    pBindings->Invalidate( SID_LINKS );             // Link-Manager enabled
+            }
 
-        if ( nRead > 0 )
+            //if the document was just loaded, but the ScDdeLink entry was missing, then
+            //don't update this link until the links are updated in response to the users
+            //decision
+            if (!pDok->HasLinkFormulaNeedingCheck())
+            {
+                pLink->Update();
+            }
+
+            if (pMyFormulaCell)
+            {
+                // StartListening after the Update to avoid circular references
+                pMyFormulaCell->StartListening(*pLink);
+            }
+        }
+        else
         {
-            aBuffer.append( reinterpret_cast< const char* >( buffer.getConstArray() ), nRead );
+            if (pMyFormulaCell)
+                pMyFormulaCell->StartListening(*pLink);
         }
 
-        xStream->closeInput();
+        //  If an new Error from Reschedule appears when the link is executed then reset the errorflag
+        if (pMyFormulaCell && pMyFormulaCell->GetRawError() != 0 && !bWasError)
+            pMyFormulaCell->SetErrCode(0);
+
+        //  check the value
+        if (pLink->HasResult())
+            PushString(pLink->GetResult());
+        else
+            PushError(formula::errNoValue);
 
-        OUString aContent = OStringToOUString( aBuffer.makeStringAndClear(), RTL_TEXTENCODING_UTF8 );
-        PushString( aContent );
+        pDok->EnableIdle(bOldEnabled);
+        mpLinkManager->CloseCachedComps();
     }
 }
 
diff --git a/sc/source/core/tool/webservicelink.cxx b/sc/source/core/tool/webservicelink.cxx
new file mode 100644
index 000000000000..82310f2b1351
--- /dev/null
+++ b/sc/source/core/tool/webservicelink.cxx
@@ -0,0 +1,106 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <comphelper/fileformat.h>
+#include <comphelper/string.hxx>
+#include <osl/thread.h>
+#include <sfx2/linkmgr.hxx>
+#include <sfx2/bindings.hxx>
+
+#include <com/sun/star/ucb/XSimpleFileAccess3.hpp>
+#include <com/sun/star/ucb/SimpleFileAccess.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+
+#include <webservicelink.hxx>
+#include <brdcst.hxx>
+#include <document.hxx>
+#include <scmatrix.hxx>
+#include <patattr.hxx>
+#include <rechead.hxx>
+#include <rangeseq.hxx>
+#include <sc.hrc>
+#include <hints.hxx>
+
+ScWebServiceLink::ScWebServiceLink(ScDocument* pD, const OUString& rURL)
+    : ::sfx2::SvBaseLink(SfxLinkUpdateMode::ALWAYS, SotClipboardFormatId::STRING)
+    , pDoc(pD)
+    , aURL(rURL)
+    , bHasResult(false)
+{
+}
+
+ScWebServiceLink::~ScWebServiceLink() {}
+
+sfx2::SvBaseLink::UpdateResult ScWebServiceLink::DataChanged(const OUString&, const css::uno::Any&)
+{
+    aResult.clear();
+    bHasResult = false;
+
+    css::uno::Reference<css::ucb::XSimpleFileAccess3> xFileAccess(
+        css::ucb::SimpleFileAccess::create(comphelper::getProcessComponentContext()),
+        css::uno::UNO_QUERY);
+    if (!xFileAccess.is())
+        return ERROR_GENERAL;
+
+    css::uno::Reference<css::io::XInputStream> xStream;
+    try
+    {
+        xStream = xFileAccess->openFileRead(aURL);
+    }
+    catch (...)
+    {
+        // don't let any exceptions pass
+        return ERROR_GENERAL;
+    }
+    if (!xStream.is())
+        return ERROR_GENERAL;
+
+    const sal_Int32 BUF_LEN = 8000;
+    css::uno::Sequence<sal_Int8> buffer(BUF_LEN);
+    OStringBuffer aBuffer(64000);
+
+    sal_Int32 nRead = 0;
+    while ((nRead = xStream->readBytes(buffer, BUF_LEN)) == BUF_LEN)
+        aBuffer.append(reinterpret_cast<const char*>(buffer.getConstArray()), nRead);
+
+    if (nRead > 0)
+        aBuffer.append(reinterpret_cast<const char*>(buffer.getConstArray()), nRead);
+
+    xStream->closeInput();
+
+    aResult = OStringToOUString(aBuffer.makeStringAndClear(), RTL_TEXTENCODING_UTF8);
+    bHasResult = true;
+
+    //  Something happened...
+    if (HasListeners())
+    {
+        Broadcast(ScHint(SC_HINT_DATACHANGED, ScAddress()));
+        pDoc->TrackFormulas(); // must happen immediately
+        pDoc->StartTrackTimer();
+    }
+
+    return SUCCESS;
+}
+
+void ScWebServiceLink::ListenersGone()
+{
+    ScDocument* pStackDoc = pDoc; // member pDoc can't be used after removing the link
+
+    sfx2::LinkManager* pLinkMgr = pDoc->GetLinkManager();
+    pLinkMgr->Remove(this); // deletes this
+
+    if (pLinkMgr->GetLinks().empty()) // deleted the last one ?
+    {
+        SfxBindings* pBindings = pStackDoc->GetViewBindings(); // don't use member pDoc!
+        if (pBindings)
+            pBindings->Invalidate(SID_LINKS);
+    }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 42344e0622c8..0e7671bdeffb 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -448,7 +448,7 @@ void ScDocShell::Execute( SfxRequest& rReq )
                     ReloadTabLinks();
                     aDocument.UpdateExternalRefLinks(GetActiveDialogParent());
 
-                    bool bAnyDde = aDocument.GetDocLinkManager().updateDdeOrOleLinks(GetActiveDialogParent());
+                    bool bAnyDde = aDocument.GetDocLinkManager().updateDdeOrOleOrWebServiceLinks(GetActiveDialogParent());
 
                     if (bAnyDde)
                     {
diff --git a/sc/source/ui/docshell/documentlinkmgr.cxx b/sc/source/ui/docshell/documentlinkmgr.cxx
index 520b8542afc0..b8a9df65cb6b 100644
--- a/sc/source/ui/docshell/documentlinkmgr.cxx
+++ b/sc/source/ui/docshell/documentlinkmgr.cxx
@@ -20,6 +20,7 @@
 #include <documentlinkmgr.hxx>
 #include <datastream.hxx>
 #include <ddelink.hxx>
+#include <webservicelink.hxx>
 #include <sc.hrc>
 #include <scresid.hxx>
 
@@ -115,15 +116,15 @@ bool DocumentLinkManager::idleCheckLinks()
 
 bool DocumentLinkManager::hasDdeLinks() const
 {
-    return hasDdeOrOleLinks(true, false);
+    return hasDdeOrOleOrWebServiceLinks(true, false, false);
 }
 
-bool DocumentLinkManager::hasDdeOrOleLinks() const
+bool DocumentLinkManager::hasDdeOrOleOrWebServiceLinks() const
 {
-    return hasDdeOrOleLinks(true, true);
+    return hasDdeOrOleOrWebServiceLinks(true, true, true);
 }
 
-bool DocumentLinkManager::hasDdeOrOleLinks(bool bDde, bool bOle) const
+bool DocumentLinkManager::hasDdeOrOleOrWebServiceLinks(bool bDde, bool bOle, bool bWebService) const
 {
     if (!mpImpl->mpLinkManager)
         return false;
@@ -136,12 +137,14 @@ bool DocumentLinkManager::hasDdeOrOleLinks(bool bDde, bool bOle) const
             return true;
         if (bOle && dynamic_cast<SdrEmbedObjectLink*>(pBase))
             return true;
+        if (bWebService && dynamic_cast<ScWebServiceLink*>(pBase))
+            return true;
     }
 
     return false;
 }
 
-bool DocumentLinkManager::updateDdeOrOleLinks( vcl::Window* pWin )
+bool DocumentLinkManager::updateDdeOrOleOrWebServiceLinks(vcl::Window* pWin)
 {
     if (!mpImpl->mpLinkManager)
         return false;
@@ -163,6 +166,13 @@ bool DocumentLinkManager::updateDdeOrOleLinks( vcl::Window* pWin )
             continue;
         }
 
+        ScWebServiceLink* pWebserviceLink = dynamic_cast<ScWebServiceLink*>(pBase);
+        if (pWebserviceLink)
+        {
+            pWebserviceLink->Update();
+            continue;
+        }
+
         ScDdeLink* pDdeLink = dynamic_cast<ScDdeLink*>(pBase);
         if (!pDdeLink)
             continue;
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index 6c5d5dacbca0..f203b13bbc10 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -1564,7 +1564,7 @@ void ScTabViewShell::Construct( TriState nForceDesignMode )
             if (!bLink)
             {
                 const sc::DocumentLinkManager& rMgr = rDoc.GetDocLinkManager();
-                if (rMgr.hasDdeOrOleLinks() || rDoc.HasAreaLinks() || rDoc.HasLinkFormulaNeedingCheck())
+                if (rDoc.HasLinkFormulaNeedingCheck() || rDoc.HasAreaLinks() || rMgr.hasDdeOrOleOrWebServiceLinks())
                     bLink = true;
             }
             if (bLink)
commit 0b2b9a7ef9c2e5467fd01dc29a097c77b80cf89a
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Jan 11 14:16:15 2018 +0000

    Better handle ScDde formulas with missing dde-link entries
    
    typically each ScDde formula has a matching table:dde-link which
    results in a ScDdeLink getting inserted during the load. If that dde-link
    is missing then no ScDdeLink exists and ScDde() will create a new one without
    cached content. So detect that ScDde is used in the freshing loaded ods
    and defer fetching new content until the right time.
    
    only call GetHasMacroFunc to set SetHasMacroFunc
    
    and bHasMacroFunc is not accessed any other way, so this is an oxbow
    
    Reviewed-on: https://gerrit.libreoffice.org/47757
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit b0597ba5d745974fce752e1b677451a19350d351)
    Reviewed-on: https://gerrit.libreoffice.org/47818
    Reviewed-by: Eike Rathke <erack at redhat.com>
    
    Conflicts:
            sc/qa/unit/ucalc.cxx
            sc/source/core/data/documen2.cxx
            sc/inc/document.hxx
    
    Change-Id: I016b53288076d83dd49e92e245346a5f7f560522

diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index b17296e539f2..e937bc63dc28 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -447,7 +447,7 @@ private:
     // for detective update, is set for each change of a formula
     bool                bDetectiveDirty;
 
-    bool                bHasMacroFunc;      // valid only after loading
+    bool                bLinkFormulaNeedingCheck; // valid only after loading, for ocDde
 
     sal_uInt8               nAsianCompression;
     sal_uInt8               nAsianKerning;
@@ -1910,8 +1910,8 @@ public:
     bool            IsDetectiveDirty() const     { return bDetectiveDirty; }
     void            SetDetectiveDirty(bool bSet) { bDetectiveDirty = bSet; }
 
-    bool            GetHasMacroFunc() const      { return bHasMacroFunc; }
-    void            SetHasMacroFunc(bool bSet)   { bHasMacroFunc = bSet; }
+    bool            HasLinkFormulaNeedingCheck() const      { return bLinkFormulaNeedingCheck; }
+    void            SetLinkFormulaNeedingCheck(bool bSet)   { bLinkFormulaNeedingCheck = bSet; }
 
     static bool     CheckMacroWarn();
 
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 28e246813355..ef1f8cc29c3a 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -200,7 +200,7 @@ ScDocument::ScDocument( ScDocumentMode eMode, SfxObjectShell* pDocShell ) :
         bInDtorClear( false ),
         bExpandRefs( false ),
         bDetectiveDirty( false ),
-        bHasMacroFunc( false ),
+        bLinkFormulaNeedingCheck( false ),
         nAsianCompression(SC_ASIANCOMPRESSION_INVALID),
         nAsianKerning(SC_ASIANKERNING_INVALID),
         bPastingDrawFromOtherDoc( false ),
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index a9cfdec8f7f6..a8d6f5eba5a7 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -1363,10 +1363,10 @@ void ScFormulaCell::CompileXML( sc::CompileFormulaContext& rCxt, ScProgress& rPr
             bChanged = true;
     }
 
-    //  Same as in Load: after loading, it must be known if ocMacro is in any formula
-    //  (for macro warning, CompileXML is called at the end of loading XML file)
-    if ( !pDocument->GetHasMacroFunc() && pCode->HasOpCodeRPN( ocMacro ) )
-        pDocument->SetHasMacroFunc( true );
+    //  After loading, it must be known if ocDde is in any formula
+    //  (for external links warning, CompileXML is called at the end of loading XML file)
+    if (!pDocument->HasLinkFormulaNeedingCheck() && pCode->HasOpCodeRPN(ocDde))
+        pDocument->SetLinkFormulaNeedingCheck(true);
 
     //volatile cells must be added here for import
     if( pCode->IsRecalcModeAlways() || pCode->IsRecalcModeForced() ||
diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index 38523e5e7e52..6dc86605534b 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -2520,8 +2520,14 @@ void ScInterpreter::ScDde()
                     pBindings->Invalidate( SID_LINKS );             // Link-Manager enablen
             }
 
+            //if the document was just loaded, but the ScDdeLink entry was missing, then
+            //don't update this link until the links are updated in response to the users
+            //decision
+            if (!pDok->HasLinkFormulaNeedingCheck())
+            {
                                     //TODO: evaluate asynchron ???
-            pLink->TryUpdate();     //  TryUpdate doesn't call Update multiple times
+                pLink->TryUpdate(); //  TryUpdate doesn't call Update multiple times
+            }
 
             if (pMyFormulaCell)
             {
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 853692cf898e..42344e0622c8 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -470,6 +470,8 @@ void ScDocShell::Execute( SfxRequest& rReq )
                     rEmbeddedObjectContainer.setUserAllowsLinkUpdate(false);
                     rReq.Ignore();
                 }
+
+                rDoc.SetLinkFormulaNeedingCheck(false);
             }
             break;
 
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index a8f319708bb3..6c5d5dacbca0 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -1564,7 +1564,7 @@ void ScTabViewShell::Construct( TriState nForceDesignMode )
             if (!bLink)
             {
                 const sc::DocumentLinkManager& rMgr = rDoc.GetDocLinkManager();
-                if (rMgr.hasDdeOrOleLinks() || rDoc.HasAreaLinks())
+                if (rMgr.hasDdeOrOleLinks() || rDoc.HasAreaLinks() || rDoc.HasLinkFormulaNeedingCheck())
                     bLink = true;
             }
             if (bLink)
commit 1fe6d731f52e804d3b2c56cd5ad08f25d2e021c9
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Jan 10 14:27:35 2018 +0000

    limit WEBSERVICE to http[s] protocols
    
    and like excel...
    
    'For protocols that aren’t supported, such as ftp:// or file://, WEBSERVICE
    returns the #VALUE! error value.'
    
    Change-Id: I0e9c6fd3426fad56a199eafac48de9b0f23914b3
    Reviewed-on: https://gerrit.libreoffice.org/47776
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/source/core/tool/interpr7.cxx b/sc/source/core/tool/interpr7.cxx
index 2d48c6b74ad0..0d55e87db4f3 100644
--- a/sc/source/core/tool/interpr7.cxx
+++ b/sc/source/core/tool/interpr7.cxx
@@ -14,6 +14,7 @@
 #include <rtl/strbuf.hxx>
 #include <formula/errorcodes.hxx>
 #include <svtools/miscopt.hxx>
+#include <tools/urlobj.hxx>
 
 #include <com/sun/star/ucb/XSimpleFileAccess3.hpp>
 #include <com/sun/star/ucb/SimpleFileAccess.hpp>
@@ -241,6 +242,14 @@ void ScInterpreter::ScWebservice()
             return;
         }
 
+        INetURLObject aObj(aURI, INetProtocol::File);
+        INetProtocol eProtocol = aObj.GetProtocol();
+        if (eProtocol != INetProtocol::Http && eProtocol != INetProtocol::Https)
+        {
+            PushError( FormulaError::NoValue );
+            return;
+        }
+
         uno::Reference< ucb::XSimpleFileAccess3 > xFileAccess( ucb::SimpleFileAccess::create( comphelper::getProcessComponentContext() ), uno::UNO_QUERY );
         if(!xFileAccess.is())
         {
commit 83606ed3cdd1143cfa18f04eb382d9ceca84b575
Author: David Tardon <dtardon at redhat.com>
Date:   Thu Jun 15 16:02:48 2017 +0200

    upload graphite 1.3.10
    
    Reviewed-on: https://gerrit.libreoffice.org/38837
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    (cherry picked from commit 619d93c8f660b26e19f41c6908807819ac783958)
    Reviewed-on: https://gerrit.libreoffice.org/38845
    (cherry picked from commit ac80b0687b4a9ed345be68e446dbf11258ef0b28)
    
    Conflicts:
            download.lst
    
    Change-Id: Ib70e1c08a11465f5a65be8cd0c892e8f7667b478

diff --git a/download.lst b/download.lst
index 94242e2e11e4..42ed25265e27 100644
--- a/download.lst
+++ b/download.lst
@@ -57,7 +57,8 @@ export FREETYPE_TARBALL := dbf2caca1d3afd410a29217a9809d397-freetype-2.4.8.tar.b
 export GLEW_TARBALL := 3941e9cab2f4f9d8faee3e8d57ae7664-glew-1.12.0.zip
 export GLM_TARBALL := bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.zip
 export GLYPHY_TARBALL := 5d303fb955beb9bf112267316ca9d021-glyphy-0.2.0.tar.bz2
-export GRAPHITE_TARBALL := 3069842a88b8f40c6b83ad2850cda293-graphite2-minimal-1.3.9.tgz
+export GRAPHITE_MD5SUM := 9c499b8ec9f1b81fd0bb6a3b986f4b0f
+export GRAPHITE_TARBALL := graphite2-minimal-1.3.10.tgz
 export HARFBUZZ_MD5SUM := 9f4b6831c86135faef011e991f59f77f
 export HARFBUZZ_TARBALL := harfbuzz-1.2.6.tar.bz2
 export HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
commit 20e48bc167ba4f346bd0678b0bf15066281e2fd5
Author: Andras Timar <andras.timar at collabora.com>
Date:   Fri Nov 11 11:31:59 2016 +0100

    new release of Graphite lib: 1.3.9
    
    Reviewed-on: https://gerrit.libreoffice.org/30771
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    (cherry picked from commit 0220020a620a69eae493070ddd88cc74825400b1)
    
    Conflicts:
            download.lst
    
    Change-Id: I4e9a7ebf323848a03e02da3e9ed39377d1df6715

diff --git a/download.lst b/download.lst
index 773c15813d08..94242e2e11e4 100644
--- a/download.lst
+++ b/download.lst
@@ -57,7 +57,7 @@ export FREETYPE_TARBALL := dbf2caca1d3afd410a29217a9809d397-freetype-2.4.8.tar.b
 export GLEW_TARBALL := 3941e9cab2f4f9d8faee3e8d57ae7664-glew-1.12.0.zip
 export GLM_TARBALL := bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.zip
 export GLYPHY_TARBALL := 5d303fb955beb9bf112267316ca9d021-glyphy-0.2.0.tar.bz2
-export GRAPHITE_TARBALL := 4311dd9ace498b57c85f611e0670df64-graphite2-minimal-1.3.8.tgz
+export GRAPHITE_TARBALL := 3069842a88b8f40c6b83ad2850cda293-graphite2-minimal-1.3.9.tgz
 export HARFBUZZ_MD5SUM := 9f4b6831c86135faef011e991f59f77f
 export HARFBUZZ_TARBALL := harfbuzz-1.2.6.tar.bz2
 export HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
diff --git a/external/graphite/graphite2.win64.patch.1 b/external/graphite/graphite2.win64.patch.1
index 4e1172ad8222..d7cf11e63189 100644
--- a/external/graphite/graphite2.win64.patch.1
+++ b/external/graphite/graphite2.win64.patch.1
@@ -21,7 +21,7 @@ diff -urN graphite2-1.3.4.orig/src/inc/Main.h graphite2-1.3.4/src/inc/Main.h
 +#ifdef _WIN32
 +#pragma warning(disable: 4510 4610)
 +#endif
- 
+
  #include <cstdlib>
  #include "graphite2/Types.h"
 diff -urN graphite2-1.3.4.orig/src/json.cpp graphite2-1.3.4/src/json.cpp
@@ -36,11 +36,11 @@ diff -urN graphite2-1.3.4.orig/src/json.cpp graphite2-1.3.4/src/json.cpp
 +#endif
  json & json::operator << (json::boolean b) throw()  { context(seq); fputs(b ? "true" : "false", _stream); return *this; }
  json & json::operator << (json::_null_t) throw()    { context(seq); fputs("null",_stream); return *this; }
- 
+
 diff -urN graphite2-1.3.4.orig/src/Pass.cpp graphite2-1.3.4/src/Pass.cpp
 --- graphite2-1.3.4.orig/src/Pass.cpp	2015-12-22 14:25:46.399566417 +0100
 +++ graphite2-1.3.4/src/Pass.cpp	2015-12-22 14:26:13.439722846 +0100
-@@ -554,7 +554,7 @@
+@@ -568,7 +568,7 @@
          if (r->rule->preContext > fsm.slots.context())
              continue;
          *fsm.dbgout << json::flat << json::object
@@ -49,8 +49,8 @@ diff -urN graphite2-1.3.4.orig/src/Pass.cpp graphite2-1.3.4/src/Pass.cpp
                      << "failed" << true
                      << "input" << json::flat << json::object
                          << "start" << objectid(dslot(&fsm.slots.segment, input_slot(fsm.slots, -r->rule->preContext)))
-@@ -568,7 +568,7 @@
- void Pass::dumpRuleEventOutput(const FiniteStateMachine & fsm, Machine & m, const Rule & r, Slot * const last_slot) const
+@@ -582,7 +582,7 @@
+ void Pass::dumpRuleEventOutput(const FiniteStateMachine & fsm, const Rule & r, Slot * const last_slot) const
  {
      *fsm.dbgout     << json::item << json::flat << json::object
 -                        << "id"     << &r - m_rules
commit 69860d906c2bc5bb49fa1eae8734bf52330ff87b
Author: David Ostrovsky <david at ostrovsky.org>
Date:   Thu Aug 10 00:18:12 2017 +0200

    python3: upgrade to release 3.5.4
    
    Change-Id: I9300b2ec1e1dcedbcbfe793e1450166af1bf1944
    Reviewed-on: https://gerrit.libreoffice.org/40944
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    Tested-by: Jenkins <ci at libreoffice.org>
    (cherry picked from commit f0e68d4feaaa43f7450432ad1ebd92c2b572400f)
    Reviewed-on: https://gerrit.libreoffice.org/41028
    (cherry picked from commit f18ea813967c1b35a8977bd193c19857f61f7a8c)

diff --git a/download.lst b/download.lst
index 4a8e60bcd93d..773c15813d08 100644
--- a/download.lst
+++ b/download.lst
@@ -136,8 +136,8 @@ ifeq ($(PYTHON_VERSION_MINOR),3)
 export PYTHON_MD5SUM := 803a75927f8f241ca78633890c798021
 export PYTHON_TARBALL := Python-3.3.5.tgz
 else
-export PYTHON_MD5SUM := 6192f0e45f02575590760e68c621a488
-export PYTHON_TARBALL := Python-3.5.3.tgz
+export PYTHON_MD5SUM := 2ed4802b7a2a7e40d2e797272bf388ec
+export PYTHON_TARBALL := Python-3.5.4.tgz
 endif
 
 export RAPTOR_TARBALL := 4ceb9316488b0ea01acf011023cf7fff-raptor2-2.0.9.tar.gz
diff --git a/external/python3/UnpackedTarball_python3.mk b/external/python3/UnpackedTarball_python3.mk
index 1a96159ba440..51f8b99dc5ad 100644
--- a/external/python3/UnpackedTarball_python3.mk
+++ b/external/python3/UnpackedTarball_python3.mk
@@ -19,8 +19,8 @@ $(eval $(call gb_UnpackedTarball_add_patches,python3,\
 	external/python3/i100492-freebsd.patch.1 \
 	external/python3/python-3.3.3-aix.patch.1 \
 	external/python3/python-3.3.0-darwin.patch.1 \
-	external/python3/python-3.3.0-ssl.patch.1 \
-	external/python3/python-3.3.0-msvc-disable.patch.1 \
+	external/python3/python-3.5.4-ssl.patch.1 \
+	external/python3/python-3.5.4-msvc-disable.patch.1 \
 	external/python3/python-3.3.0-i42553.patch.2 \
 	external/python3/python-3.3.0-pythreadstate.patch.1 \
 	external/python3/python-3.3.0-clang.patch.1 \
diff --git a/external/python3/python-3.3.0-msvc-disable.patch.1 b/external/python3/python-3.5.4-msvc-disable.patch.1
similarity index 95%
rename from external/python3/python-3.3.0-msvc-disable.patch.1
rename to external/python3/python-3.5.4-msvc-disable.patch.1
index c571c5c4e878..54b2a5f46540 100644
--- a/external/python3/python-3.3.0-msvc-disable.patch.1
+++ b/external/python3/python-3.5.4-msvc-disable.patch.1
@@ -1,8 +1,8 @@
 Disable some stuff LO does not need, especially stuff with external dependencies
 
 diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
---- python3.orig/PCbuild/pcbuild.sln	2015-07-26 17:43:52.262528695 +0200
-+++ python3/PCbuild/pcbuild.sln	2015-07-26 18:00:18.438594901 +0200
+--- python3.orig/PCbuild/pcbuild.sln	2017-08-10 00:04:44.359879894 +0200
++++ python3/PCbuild/pcbuild.sln	2017-08-10 00:13:51.179873748 +0200
 @@ -12,8 +12,6 @@
  EndProject
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcxproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
@@ -45,7 +45,7 @@ diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcxproj", "{9E48B300-37D1-11DD-8C41-005056C00008}"
  EndProject
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python3dll", "python3dll.vcxproj", "{885D4898-D08D-4091-9C40-C700CFE3FC5A}"
-@@ -58,12 +58,6 @@
+@@ -80,12 +64,6 @@
  EndProject
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testmultiphase", "_testmultiphase.vcxproj", "{16BFE6F0-22EF-40B5-B831-7E937119EF10}"
  EndProject
@@ -58,3 +58,4 @@ diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyshellext", "pyshellext.vcxproj", "{0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}"
  EndProject
  Global
+Only in python3/PCbuild: pcbuild.sln~
diff --git a/external/python3/python-3.3.0-ssl.patch.1 b/external/python3/python-3.5.4-ssl.patch.1
similarity index 80%
rename from external/python3/python-3.3.0-ssl.patch.1
rename to external/python3/python-3.5.4-ssl.patch.1
index c4bc117f5558..beb6fe38882f 100644
--- a/external/python3/python-3.3.0-ssl.patch.1
+++ b/external/python3/python-3.5.4-ssl.patch.1
@@ -1,11 +1,11 @@
 -*- Mode: diff -*-
 
-Tweak SSL build to find OpenSSL in solver & not build it itself in "ssl.vcproj" etc.
+Tweak SSL build to find OpenSSL in workdir & not build it itself in "ssl.vcproj" etc.
 
 diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
---- python3.orig/PCbuild/pcbuild.sln	2015-08-22 18:57:16.653719900 +0200
-+++ python3/PCbuild/pcbuild.sln	2015-08-22 19:03:06.062853000 +0200
-@@ -64,10 +64,6 @@
+--- python3.orig/PCbuild/pcbuild.sln	2017-08-09 23:39:15.511897077 +0200
++++ python3/PCbuild/pcbuild.sln	2017-08-09 23:48:41.375890717 +0200
+@@ -86,10 +86,6 @@
  EndProject
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tk", "tk.vcxproj", "{7E85ECCF-A72C-4DA4-9E52-884508E80BA1}"
  EndProject
@@ -17,40 +17,46 @@ diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
  EndProject
  Global
 diff -ru python3.orig/PCbuild/_ssl.vcxproj python3/PCbuild/_ssl.vcxproj
---- python3.orig/PCbuild/_ssl.vcxproj   2015-08-11 02:52:36.000000000 +0200
-+++ python3/PCbuild/_ssl.vcxproj        2015-08-22 18:19:20.744299000 +0200
+--- python3.orig/PCbuild/_ssl.vcxproj	2017-08-07 09:59:11.000000000 +0200
++++ python3/PCbuild/_ssl.vcxproj	2017-08-09 23:50:36.871889419 +0200
+@@ -1,4 +1,4 @@
+-<?xml version="1.0" encoding="utf-8"?>
++<?xml version="1.0" encoding="utf-8"?>
+ <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+   <ItemGroup Label="ProjectConfigurations">
+     <ProjectConfiguration Include="Debug|Win32">
 @@ -61,10 +61,10 @@
-   </PropertyGroup>
-   <ItemDefinitionGroup>
-     <ClCompile>
--      <AdditionalIncludeDirectories>$(opensslIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <AdditionalIncludeDirectories>$(WORKDIR)/UnpackedTarball/openssl/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-     </ClCompile>
-     <Link>
--      <AdditionalDependencies>ws2_32.lib;crypt32.lib;$(OutDir)libeay$(PyDebugExt).lib;$(OutDir)ssleay$(PyDebugExt).lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalDependencies>ws2_32.lib;crypt32.lib;$(WORKDIR)\UnpackedTarball\openssl\out32dll\libeay32.lib;$(WORKDIR)\UnpackedTarball\openssl\out32dll\ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-     </Link>
-   </ItemDefinitionGroup>
-   <ItemGroup>
-@@ -75,14 +75,6 @@
-       <Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
-       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-     </ProjectReference>
--    <ProjectReference Include="libeay.vcxproj">
--      <Project>{e5b04cc0-eb4c-42ab-b4dc-18ef95f864b0}</Project>
--      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
--    </ProjectReference>
--    <ProjectReference Include="ssleay.vcxproj">
--      <Project>{10615b24-73bf-4efa-93aa-236916321317}</Project>
--      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
--    </ProjectReference>
-     <ProjectReference Include="_socket.vcxproj">
-       <Project>{86937f53-c189-40ef-8ce8-8759d8e7d480}</Project>
-       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+   </PropertyGroup>
+   <ItemDefinitionGroup>
+     <ClCompile>
+-      <AdditionalIncludeDirectories>$(opensslIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <AdditionalIncludeDirectories>$(WORKDIR)/UnpackedTarball/openssl/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+     </ClCompile>
+     <Link>
+-      <AdditionalDependencies>ws2_32.lib;crypt32.lib;$(OutDir)libeay$(PyDebugExt).lib;$(OutDir)ssleay$(PyDebugExt).lib;%(AdditionalDependencies)</AdditionalDependencies>
++      <AdditionalDependencies>ws2_32.lib;crypt32.lib;$(WORKDIR)\UnpackedTarball\openssl\out32dll\libeay32.lib;$(WORKDIR)\UnpackedTarball\openssl\out32dll\ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+     </Link>
+   </ItemDefinitionGroup>
+   <ItemGroup>
+@@ -78,14 +78,6 @@
+       <Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
+       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+     </ProjectReference>
+-    <ProjectReference Include="libeay.vcxproj">
+-      <Project>{e5b04cc0-eb4c-42ab-b4dc-18ef95f864b0}</Project>
+-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+-    </ProjectReference>
+-    <ProjectReference Include="ssleay.vcxproj">
+-      <Project>{10615b24-73bf-4efa-93aa-236916321317}</Project>
+-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+-    </ProjectReference>
+     <ProjectReference Include="_socket.vcxproj">
+       <Project>{86937f53-c189-40ef-8ce8-8759d8e7d480}</Project>
+       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
 diff -ru python3.orig/setup.py python3/setup.py
---- python3.orig/setup.py       2015-08-22 18:16:15.825267200 +0200
-+++ python3/setup.py    2015-08-22 18:22:44.162757900 +0200
-@@ -778,7 +778,10 @@
+--- python3.orig/setup.py	2017-08-09 23:39:15.495897077 +0200
++++ python3/setup.py	2017-08-09 23:53:06.891887733 +0200
+@@ -807,7 +807,10 @@
          exts.append( Extension('_socket', ['socketmodule.c'],
                                 depends = ['socketmodule.h']) )
          # Detect SSL support for the socket module (via _ssl)
@@ -61,7 +67,7 @@ diff -ru python3.orig/setup.py python3/setup.py
                                '/usr/local/ssl/include',
                                '/usr/contrib/ssl/include/'
                               ]
-@@ -790,8 +793,12 @@
+@@ -819,8 +822,12 @@
                                 ['/usr/kerberos/include'])
              if krb5_h:
                  ssl_incs += krb5_h
@@ -74,5 +80,4 @@ diff -ru python3.orig/setup.py python3/setup.py
 +                                      '/usr/local/ssl/lib',
                                        '/usr/contrib/ssl/lib/'
                                       ] )
-
-
+ 
commit 44e611672edd6623f678a5f102edf106bff2b5ce
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Jan 17 15:38:11 2017 +0100

    python3: upgrade to release 3.5.3
    
    - fixes some minor CVEs
    - drop python-vc2013.patch.1
    - drop python-3.3.3-py17797.patch.1:
      the bug was fixed in MSVC2015 runtime so not relevant
    - drop python-lsan.patch.0:
      fixed upstream
    - ubsan.patch.0:
      drop hunks that were fixed upstream
    - python-3.5.0-tcltk.disable.patch:
      merge into msvc-disable.patch.1
    
    Reviewed-on: https://gerrit.libreoffice.org/33225
    Reviewed-by: David Ostrovsky <david at ostrovsky.org>
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    (cherry picked from commit 743f9fc86f3d3b6e87bf58c0654bcdccab0ab383)
    Reviewed-on: https://gerrit.libreoffice.org/33262
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit baf09e572b377f569b00e61c10710787b1c151ba)
    
     Conflicts:
            external/python3/UnpackedTarball_python3.mk
    
    Change-Id: I2aecae446539d28eaf3eb64ee67581596019335d

diff --git a/download.lst b/download.lst
index 23a0a450b665..4a8e60bcd93d 100644
--- a/download.lst
+++ b/download.lst
@@ -136,8 +136,8 @@ ifeq ($(PYTHON_VERSION_MINOR),3)
 export PYTHON_MD5SUM := 803a75927f8f241ca78633890c798021
 export PYTHON_TARBALL := Python-3.3.5.tgz
 else
-export PYTHON_MD5SUM := a56c0c0b45d75a0ec9c6dee933c41c36
-export PYTHON_TARBALL := Python-3.5.0.tgz
+export PYTHON_MD5SUM := 6192f0e45f02575590760e68c621a488
+export PYTHON_TARBALL := Python-3.5.3.tgz
 endif
 
 export RAPTOR_TARBALL := 4ceb9316488b0ea01acf011023cf7fff-raptor2-2.0.9.tar.gz
diff --git a/external/python3/ExternalPackage_python3.mk b/external/python3/ExternalPackage_python3.mk
index 07a875ccf973..3a37e2e0f14d 100644
--- a/external/python3/ExternalPackage_python3.mk
+++ b/external/python3/ExternalPackage_python3.mk
@@ -650,7 +650,6 @@ $(eval $(call gb_ExternalPackage_add_unpacked_files,python3,$(LIBO_BIN_FOLDER)/p
 	Lib/lib2to3/fixes/fix_asserts.py \
 	Lib/lib2to3/fixes/fix_basestring.py \
 	Lib/lib2to3/fixes/fix_buffer.py \
-	Lib/lib2to3/fixes/fix_callable.py \
 	Lib/lib2to3/fixes/fix_dict.py \
 	Lib/lib2to3/fixes/fix_except.py \
 	Lib/lib2to3/fixes/fix_execfile.py \
diff --git a/external/python3/UnpackedTarball_python3.mk b/external/python3/UnpackedTarball_python3.mk
index 0e706d79ce92..1a96159ba440 100644
--- a/external/python3/UnpackedTarball_python3.mk
+++ b/external/python3/UnpackedTarball_python3.mk
@@ -19,17 +19,14 @@ $(eval $(call gb_UnpackedTarball_add_patches,python3,\
 	external/python3/i100492-freebsd.patch.1 \
 	external/python3/python-3.3.3-aix.patch.1 \
 	external/python3/python-3.3.0-darwin.patch.1 \
-	external/python3/python-3.3.0-msvc-disable.patch.1 \
 	external/python3/python-3.3.0-ssl.patch.1 \
-	external/python3/python-3.3.3-py17797.patch.1 \
+	external/python3/python-3.3.0-msvc-disable.patch.1 \
 	external/python3/python-3.3.0-i42553.patch.2 \
 	external/python3/python-3.3.0-pythreadstate.patch.1 \
 	external/python3/python-3.3.0-clang.patch.1 \
 	external/python3/python-3.3.5-pyexpat-symbols.patch.1 \
-	external/python3/python-lsan.patch.0 \
 	external/python3/ubsan.patch.0 \
 	external/python3/python-3.5.tweak.strip.soabi.patch \
-	external/python3/python-3.5.0-tcltk.disable.patch \
 ))
 
 ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD SOLARIS,$(OS)),)
@@ -44,12 +41,10 @@ $(eval $(call gb_UnpackedTarball_add_patches,python3,\
 ))
 endif
 
-ifeq ($(OS)-$(COM),WNT-MSC)
-ifneq ($(filter 120,$(VCVER)),)
-$(eval $(call gb_UnpackedTarball_add_patches,python3,\
-	external/python3/python-vc2013.patch.1 \
+ifneq ($(SYSTEM_ZLIB),TRUE)
+$(eval $(call gb_UnpackedTarball_add_patches,python3, \
+    external/python3/internal-zlib.patch.0 \
 ))
 endif
-endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/python3/python-3.3.0-darwin.patch.1 b/external/python3/python-3.3.0-darwin.patch.1
index 2cf5bbb9e1bd..d5cb17e339a2 100644
--- a/external/python3/python-3.3.0-darwin.patch.1
+++ b/external/python3/python-3.3.0-darwin.patch.1
@@ -27,8 +27,6 @@ diff -ru python3.orig/configure python3/configure
                 LIPO_32BIT_FLAGS=""
                 ARCH_RUN_32BIT=""
                 ;;
-Only in python3: .#configure
-Only in python3: #configure#
 diff -ru python3.orig/Mac/Makefile.in python3/Mac/Makefile.in
 --- python3.orig/Mac/Makefile.in	2015-07-05 18:50:07.000000000 +0200
 +++ python3/Mac/Makefile.in	2015-07-26 17:40:14.860514100 +0200
@@ -51,7 +49,7 @@ diff -ru python3.orig/Mac/Resources/app/Info.plist.in python3/Mac/Resources/app/
 -	<string>Python</string>
 +	<string>LibreOfficePython</string>
  	<key>CFBundleGetInfoString</key>
- 	<string>%version%, (c) 2001-2015 Python Software Foundation.</string>
+ 	<string>%version%, (c) 2001-2016 Python Software Foundation.</string>
  	<key>CFBundleHelpBookFolder</key>
 diff -ru python3.orig/Mac/Resources/framework/Info.plist.in python3/Mac/Resources/framework/Info.plist.in
 --- python3.orig/Mac/Resources/framework/Info.plist.in	2015-07-05 18:50:07.000000000 +0200
diff --git a/external/python3/python-3.3.0-msvc-disable.patch.1 b/external/python3/python-3.3.0-msvc-disable.patch.1
index bb0a57f4c032..c571c5c4e878 100644
--- a/external/python3/python-3.3.0-msvc-disable.patch.1
+++ b/external/python3/python-3.3.0-msvc-disable.patch.1
@@ -45,3 +45,16 @@ diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcxproj", "{9E48B300-37D1-11DD-8C41-005056C00008}"
  EndProject
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python3dll", "python3dll.vcxproj", "{885D4898-D08D-4091-9C40-C700CFE3FC5A}"
+@@ -58,12 +58,6 @@
+ EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testmultiphase", "_testmultiphase.vcxproj", "{16BFE6F0-22EF-40B5-B831-7E937119EF10}"
+ EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcl", "tcl.vcxproj", "{B5FD6F1D-129E-4BFF-9340-03606FAC7283}"
+-EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tix", "tix.vcxproj", "{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}"
+-EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tk", "tk.vcxproj", "{7E85ECCF-A72C-4DA4-9E52-884508E80BA1}"
+-EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyshellext", "pyshellext.vcxproj", "{0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}"
+ EndProject
+ Global
diff --git a/external/python3/python-3.3.0-ssl.patch.1 b/external/python3/python-3.3.0-ssl.patch.1
index e43a7b332a88..c4bc117f5558 100644
--- a/external/python3/python-3.3.0-ssl.patch.1
+++ b/external/python3/python-3.3.0-ssl.patch.1
@@ -13,9 +13,9 @@ diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
 -EndProject
 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay", "ssleay.vcxproj", "{10615B24-73BF-4EFA-93AA-236916321317}"
 -EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyshellext", "pyshellext.vcxproj", "{0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}"
+ EndProject
  Global
- 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
- 		Debug|Win32 = Debug|Win32
 diff -ru python3.orig/PCbuild/_ssl.vcxproj python3/PCbuild/_ssl.vcxproj
 --- python3.orig/PCbuild/_ssl.vcxproj   2015-08-11 02:52:36.000000000 +0200
 +++ python3/PCbuild/_ssl.vcxproj        2015-08-22 18:19:20.744299000 +0200
@@ -23,7 +23,7 @@ diff -ru python3.orig/PCbuild/_ssl.vcxproj python3/PCbuild/_ssl.vcxproj
    </PropertyGroup>
    <ItemDefinitionGroup>
      <ClCompile>
--      <AdditionalIncludeDirectories>$(opensslDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <AdditionalIncludeDirectories>$(opensslIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 +      <AdditionalIncludeDirectories>$(WORKDIR)/UnpackedTarball/openssl/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      </ClCompile>
      <Link>
diff --git a/external/python3/python-3.3.3-py17797.patch.1 b/external/python3/python-3.3.3-py17797.patch.1
deleted file mode 100644
index 0365717d1070..000000000000
--- a/external/python3/python-3.3.3-py17797.patch.1
+++ /dev/null
@@ -1,49 +0,0 @@
-http://bugs.python.org/issue17797
-http://connect.microsoft.com/VisualStudio/feedback/details/785119/
-
-Visual Studio 2013 changed return value for fileno function that breaks
-when python tries to check/setup stdin/out/err
-GetStdHandle on Windows XP behaves contrary to the documentation...
-MSVC 14.0 fixed this bug.
-
-diff -ru python3.orig/Python/pylifecycle.c python3/Python/pylifecycle.c
---- python3.orig/Python/pylifecycle.c	2015-07-05 18:50:08.000000000 +0200
-+++ python3/Python/pylifecycle.c	2015-07-26 20:01:23.563082638 +0200
-@@ -1065,15 +1065,30 @@
- static int
- is_valid_fd(int fd)
- {
--    int dummy_fd;
-     if (fd < 0 || !_PyVerify_fd(fd))
-         return 0;
--    _Py_BEGIN_SUPPRESS_IPH
--    dummy_fd = dup(fd);
--    if (dummy_fd >= 0)
--        close(dummy_fd);
--    _Py_END_SUPPRESS_IPH
--    return dummy_fd >= 0;
-+
-+#if defined(MS_WINDOWS) && defined(HAVE_FSTAT) && defined(_MSC_VER) && (_MSC_VER >= 1700 && _MSC_VER < 1900)
-+    /* dup (DuplicateHandle) doesn't say fd is a valid *file* handle.
-+     * It could be a current thread pseudo-handle.
-+     */
-+    {
-+        struct stat buf;
-+        if (fstat(fd, &buf) < 0 && (errno == EBADF || errno == ENOENT))
-+            return 0;
-+        else
-+	    return 1;
-+    }
-+#else
-+    {
-+        int dummy_fd = dup(fd);
-+        _Py_BEGIN_SUPPRESS_IPH
-+        if (dummy_fd >= 0)
-+            close(dummy_fd);
-+        _Py_END_SUPPRESS_IPH
-+        return dummy_fd >= 0;
-+    }
-+#endif
- }
- 
- /* Initialize sys.stdin, stdout, stderr and builtins.open */
diff --git a/external/python3/python-3.5.0-tcltk.disable.patch b/external/python3/python-3.5.0-tcltk.disable.patch
deleted file mode 100644
index 3aeebec2719c..000000000000
--- a/external/python3/python-3.5.0-tcltk.disable.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
---- foo/python3.orig/PCbuild/pcbuild.sln	2015-08-22 19:12:48.508338400 +0200
-+++ foo/python3/PCbuild/pcbuild.sln	2015-08-22 19:15:50.130169800 +0200
-@@ -58,12 +58,6 @@
- EndProject
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testmultiphase", "_testmultiphase.vcxproj", "{16BFE6F0-22EF-40B5-B831-7E937119EF10}"
- EndProject
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcl", "tcl.vcxproj", "{B5FD6F1D-129E-4BFF-9340-03606FAC7283}"
--EndProject
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tix", "tix.vcxproj", "{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}"
--EndProject
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tk", "tk.vcxproj", "{7E85ECCF-A72C-4DA4-9E52-884508E80BA1}"
--EndProject
- Global
- 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
- 		Debug|Win32 = Debug|Win32
diff --git a/external/python3/python-lsan.patch.0 b/external/python3/python-lsan.patch.0
deleted file mode 100644
index 3796904bed4e..000000000000
--- a/external/python3/python-lsan.patch.0
+++ /dev/null
@@ -1,19 +0,0 @@
---- configure
-+++ configure
-@@ -11821,6 +11821,7 @@
-         break;
-       }
-     }
-+    freeaddrinfo(aitop);
-   }
- 
-   if (!(inet4 == 0 || inet4 == 2))
-@@ -11828,8 +11829,6 @@
-   if (!(inet6 == 0 || inet6 == 2))
-     goto bad;
- 
--  if (aitop)
--    freeaddrinfo(aitop);
-   return 0;
- 
-  bad:
diff --git a/external/python3/python-vc2013.patch.1 b/external/python3/python-vc2013.patch.1
deleted file mode 100644
index c7eb30759d1f..000000000000
--- a/external/python3/python-vc2013.patch.1
+++ /dev/null
@@ -1,1213 +0,0 @@
--*- Mode:Diff -*-
---- python3/PCbuild/_ctypes.vcxproj
-+++ python3/PCbuild/_ctypes.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_ctypes_test.vcxproj
-+++ python3/PCbuild/_ctypes_test.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_decimal.vcxproj
-+++ python3/PCbuild/_decimal.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_elementtree.vcxproj
-+++ python3/PCbuild/_elementtree.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_freeze_importlib.vcxproj
-+++ python3/PCbuild/_freeze_importlib.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -28,23 +28,27 @@
-     <ConfigurationType>Application</ConfigurationType>
-     <UseDebugLibraries>true</UseDebugLibraries>
-     <CharacterSet>Unicode</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>Application</ConfigurationType>
-     <UseDebugLibraries>true</UseDebugLibraries>
-     <CharacterSet>Unicode</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>Application</ConfigurationType>
-     <UseDebugLibraries>false</UseDebugLibraries>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-     <CharacterSet>Unicode</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>Application</ConfigurationType>
-     <UseDebugLibraries>false</UseDebugLibraries>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-     <CharacterSet>Unicode</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_msi.vcxproj
-+++ python3/PCbuild/_msi.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_multiprocessing.vcxproj
-+++ python3/PCbuild/_multiprocessing.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_socket.vcxproj
-+++ python3/PCbuild/_socket.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_ssl.vcxproj
-+++ python3/PCbuild/_ssl.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_testbuffer.vcxproj
-+++ python3/PCbuild/_testbuffer.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-   <ImportGroup Label="ExtensionSettings">
---- python3/PCbuild/_testcapi.vcxproj
-+++ python3/PCbuild/_testcapi.vcxproj
-@@ -1,5 +1,5 @@
- <?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-   <ItemGroup Label="ProjectConfigurations">
-     <ProjectConfiguration Include="Debug|Win32">
-       <Configuration>Debug</Configuration>
-@@ -44,39 +44,47 @@
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>
-     <WholeProgramOptimization>true</WholeProgramOptimization>
-+    <PlatformToolset>v120</PlatformToolset>
-   </PropertyGroup>
-   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-     <ConfigurationType>DynamicLibrary</ConfigurationType>
-     <CharacterSet>NotSet</CharacterSet>

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list