Merge branch 'resolve-srand'
diff --git a/expat/CMakeLists.txt b/expat/CMakeLists.txt
index d053a1e..c749f54 100755
--- a/expat/CMakeLists.txt
+++ b/expat/CMakeLists.txt
@@ -41,6 +41,9 @@
 if(MSVC)

     add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)

 endif(MSVC)

+if(WIN32)

+    add_definitions(-DCOMPILING_FOR_WINDOWS)

+endif(WIN32)

 

 set(expat_SRCS

     lib/xmlparse.c

diff --git a/expat/bcb5/expat.bpr b/expat/bcb5/expat.bpr
index 7aff450..8a80a98 100644
--- a/expat/bcb5/expat.bpr
+++ b/expat/bcb5/expat.bpr
@@ -25,7 +25,7 @@
     <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
     <RELEASELIBPATH value="$(BCB)\lib\release"/>
     <LINKER value="ilink32"/>
-    <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS"/>
+    <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILING_FOR_WINDOWS;EXPAT_EXPORTS"/>
     <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
     <MAINSOURCE value="expat.bpf"/>
     <INCLUDEPATH value="..\lib;$(BCB)\include"/>
@@ -94,14 +94,14 @@
 
 [HistoryLists\hlConditionals]
 Count=8
-Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS
-Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS
-Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS
-Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP
-Item4=NDEBUG;WIN32;_WINDOWS;_USRDLL;_DEBUG;EXPAT_EXPORTS;COMPILED_FROM_DSP
-Item5=NDEBUG;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP;_DEBUG
-Item6=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP;_DEBUG
-Item7=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP
+Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILING_FOR_WINDOWS;EXPAT_EXPORTS
+Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;COMPILING_FOR_WINDOWS;EXPAT_EXPORTS
+Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;COMPILING_FOR_WINDOWS;EXPAT_EXPORTS
+Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;COMPILING_FOR_WINDOWS
+Item4=NDEBUG;WIN32;_WINDOWS;_USRDLL;_DEBUG;EXPAT_EXPORTS;COMPILING_FOR_WINDOWS
+Item5=NDEBUG;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;COMPILING_FOR_WINDOWS;_DEBUG
+Item6=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;COMPILING_FOR_WINDOWS;_DEBUG
+Item7=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;COMPILING_FOR_WINDOWS
 
 [HistoryLists\hlIntOutputDir]
 Count=7
diff --git a/expat/bcb5/expat.mak b/expat/bcb5/expat.mak
index 7c9c23f..fd7e26f 100644
--- a/expat/bcb5/expat.mak
+++ b/expat/bcb5/expat.mak
@@ -36,7 +36,7 @@
 PATHRC = .;
 DEBUGLIBPATH = $(BCB)\lib\debug
 RELEASELIBPATH = $(BCB)\lib\release
-USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP
+USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILING_FOR_WINDOWS
 SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
 INCLUDEPATH = ..\lib;$(BCB)\include
 LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH)
diff --git a/expat/bcb5/expat_static.bpr b/expat/bcb5/expat_static.bpr
index 0b78ec8..3a3d6ad 100644
--- a/expat/bcb5/expat_static.bpr
+++ b/expat/bcb5/expat_static.bpr
@@ -23,7 +23,7 @@
     <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
     <RELEASELIBPATH value="$(BCB)\lib\release"/>
     <LINKER value="TLib"/>
-    <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC"/>
+    <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC"/>
     <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
     <MAINSOURCE value="expat_static.bpf"/>
     <INCLUDEPATH value="..\lib;$(BCB)\include"/>
@@ -93,13 +93,13 @@
 
 [HistoryLists\hlConditionals]
 Count=7
-Item0=_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC
-Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC
-Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC
-Item3=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;_DEBUG
-Item4=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP
-Item5=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;_MBCS
-Item6=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP
+Item0=_WINDOWS;WIN32;NDEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC
+Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC
+Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC
+Item3=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILING_FOR_WINDOWS;_DEBUG
+Item4=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILING_FOR_WINDOWS
+Item5=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILING_FOR_WINDOWS;_MBCS
+Item6=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILING_FOR_WINDOWS
 
 [HistoryLists\hlIntOutputDir]
 Count=6
diff --git a/expat/bcb5/expat_static.mak b/expat/bcb5/expat_static.mak
index 9137d3b..3ae1733 100644
--- a/expat/bcb5/expat_static.mak
+++ b/expat/bcb5/expat_static.mak
@@ -35,7 +35,7 @@
 LINKER = TLib
 DEBUGLIBPATH = $(BCB)\lib\debug
 RELEASELIBPATH = $(BCB)\lib\release
-USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC
+USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC
 SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
 INCLUDEPATH = ..\lib;$(BCB)\include
 LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH)
diff --git a/expat/bcb5/expatw.bpr b/expat/bcb5/expatw.bpr
index a9c9f75..5cd1e0c 100644
--- a/expat/bcb5/expatw.bpr
+++ b/expat/bcb5/expatw.bpr
@@ -25,7 +25,7 @@
     <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
     <RELEASELIBPATH value="$(BCB)\lib\release"/>
     <LINKER value="ilink32"/>
-    <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T"/>
+    <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILING_FOR_WINDOWS;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T"/>
     <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
     <MAINSOURCE value="expatw.bpf"/>
     <INCLUDEPATH value="..\lib;$(BCB)\include"/>
@@ -94,15 +94,15 @@
 
 [HistoryLists\hlConditionals]
 Count=9
-Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
-Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
-Item2=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T
-Item3=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;_DEBUG;XML_UNICODE_WCHAR_T
-Item4=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG
-Item5=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG
-Item6=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
-Item7=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;XML_UNICODE
-Item8=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
+Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILING_FOR_WINDOWS;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
+Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;COMPILING_FOR_WINDOWS;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
+Item2=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T
+Item3=NDEBUG;COMPILING_FOR_WINDOWS;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;_DEBUG;XML_UNICODE_WCHAR_T
+Item4=NDEBUG;COMPILING_FOR_WINDOWS;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG
+Item5=NDEBUG;COMPILING_FOR_WINDOWS;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG
+Item6=NDEBUG;COMPILING_FOR_WINDOWS;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
+Item7=NDEBUG;COMPILING_FOR_WINDOWS;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;XML_UNICODE
+Item8=NDEBUG;COMPILING_FOR_WINDOWS;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
 
 [HistoryLists\hlIntOutputDir]
 Count=8
diff --git a/expat/bcb5/expatw.mak b/expat/bcb5/expatw.mak
index 08e17d0..47b9fe8 100644
--- a/expat/bcb5/expatw.mak
+++ b/expat/bcb5/expatw.mak
@@ -36,7 +36,7 @@
 PATHRC = .;
 DEBUGLIBPATH = $(BCB)\lib\debug
 RELEASELIBPATH = $(BCB)\lib\release
-USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T
+USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T
 SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
 INCLUDEPATH = ..\lib;$(BCB)\include
 LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH)
diff --git a/expat/bcb5/expatw_static.bpr b/expat/bcb5/expatw_static.bpr
index 457acc7..96ee994 100644
--- a/expat/bcb5/expatw_static.bpr
+++ b/expat/bcb5/expatw_static.bpr
@@ -23,7 +23,7 @@
     <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
     <RELEASELIBPATH value="$(BCB)\lib\release"/>
     <LINKER value="TLib"/>
-    <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T"/>
+    <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC;XML_UNICODE_WCHAR_T"/>
     <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
     <MAINSOURCE value="expatw_static.bpf"/>
     <INCLUDEPATH value="..\lib;$(BCB)\include"/>
@@ -94,21 +94,21 @@
 
 [HistoryLists\hlConditionals]
 Count=15
-Item0=_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T
-Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T
-Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T
-Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;XML_STATIC;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T
-Item4=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;_DEBUG;XML_UNICODE_WCHAR_T
-Item5=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG
-Item6=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG;__cplusplus
-Item7=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILED_FROM_DSP;XML_UNICODE;_DEBUG
-Item8=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE;_DEBUG
-Item9=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG;__WCHAR_T
-Item10=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG;_UNICODE
-Item11=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE;_DEBUG;_UNICODE
-Item12=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG
-Item13=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T
-Item14=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;XML_UNICODE
+Item0=_WINDOWS;WIN32;NDEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC;XML_UNICODE_WCHAR_T
+Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC;XML_UNICODE_WCHAR_T
+Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC;XML_UNICODE_WCHAR_T
+Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;XML_STATIC;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T
+Item4=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILING_FOR_WINDOWS;_DEBUG;XML_UNICODE_WCHAR_T
+Item5=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T;_DEBUG
+Item6=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T;_DEBUG;__cplusplus
+Item7=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE;_DEBUG
+Item8=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE;_DEBUG
+Item9=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T;_DEBUG;__WCHAR_T
+Item10=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T;_DEBUG;_UNICODE
+Item11=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE;_DEBUG;_UNICODE
+Item12=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T;_DEBUG
+Item13=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T
+Item14=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILING_FOR_WINDOWS;XML_UNICODE_WCHAR_T;XML_UNICODE
 
 [HistoryLists\hlIntOutputDir]
 Count=6
diff --git a/expat/bcb5/expatw_static.mak b/expat/bcb5/expatw_static.mak
index 16b7e5b..156adeb 100644
--- a/expat/bcb5/expatw_static.mak
+++ b/expat/bcb5/expatw_static.mak
@@ -35,7 +35,7 @@
 LINKER = TLib
 DEBUGLIBPATH = $(BCB)\lib\debug
 RELEASELIBPATH = $(BCB)\lib\release
-USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T
+USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;COMPILING_FOR_WINDOWS;XML_STATIC;XML_UNICODE_WCHAR_T
 SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
 INCLUDEPATH = ..\lib;$(BCB)\include
 LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH)
diff --git a/expat/bcb5/xmlwf.bpr b/expat/bcb5/xmlwf.bpr
index bc76586..bd7a635 100644
--- a/expat/bcb5/xmlwf.bpr
+++ b/expat/bcb5/xmlwf.bpr
@@ -25,7 +25,7 @@
     <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
     <RELEASELIBPATH value="$(BCB)\lib\release"/>
     <LINKER value="ilink32"/>
-    <USERDEFINES value="NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP"/>
+    <USERDEFINES value="NDEBUG;WIN32;_CONSOLE;COMPILING_FOR_WINDOWS"/>
     <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
     <MAINSOURCE value="xmlwf.bpf"/>
     <INCLUDEPATH value="..\xmlwf;$(BCB)\include"/>
@@ -94,12 +94,12 @@
 
 [HistoryLists\hlConditionals]
 Count=6
-Item0=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP
-Item1=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE
-Item2=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;XML_UNICODE_WCHAR_T
-Item3=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG
-Item4=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;_UNICODE;XML_UNICODE_WCHAR_T
-Item5=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;_UNICODE
+Item0=NDEBUG;WIN32;_CONSOLE;COMPILING_FOR_WINDOWS
+Item1=NDEBUG;WIN32;_CONSOLE;COMPILING_FOR_WINDOWS;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE
+Item2=NDEBUG;WIN32;_CONSOLE;COMPILING_FOR_WINDOWS;_DEBUG;XML_UNICODE_WCHAR_T
+Item3=NDEBUG;WIN32;_CONSOLE;COMPILING_FOR_WINDOWS;_DEBUG
+Item4=NDEBUG;WIN32;_CONSOLE;COMPILING_FOR_WINDOWS;_DEBUG;_UNICODE;XML_UNICODE_WCHAR_T
+Item5=NDEBUG;WIN32;_CONSOLE;COMPILING_FOR_WINDOWS;_DEBUG;_UNICODE
 
 [HistoryLists\hlIntOutputDir]
 Count=3
diff --git a/expat/bcb5/xmlwf.mak b/expat/bcb5/xmlwf.mak
index f74126e..0a66744 100644
--- a/expat/bcb5/xmlwf.mak
+++ b/expat/bcb5/xmlwf.mak
@@ -36,7 +36,7 @@
 PATHRC = .;
 DEBUGLIBPATH = $(BCB)\lib\debug
 RELEASELIBPATH = $(BCB)\lib\release
-USERDEFINES = NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP
+USERDEFINES = NDEBUG;WIN32;_CONSOLE;COMPILING_FOR_WINDOWS
 SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
 INCLUDEPATH = ..\xmlwf;$(BCB)\include
 LIBPATH = ..\xmlwf;$(BCB)\lib;$(RELEASELIBPATH)
diff --git a/expat/lib/expat.dsp b/expat/lib/expat.dsp
index 6440d37..347ca2a 100644
--- a/expat/lib/expat.dsp
+++ b/expat/lib/expat.dsp
@@ -43,7 +43,7 @@
 # PROP Ignore_Export_Lib 0

 # PROP Target_Dir ""

 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c

-# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILED_FROM_DSP" /FD /c

+# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILING_FOR_WINDOWS" /FD /c

 # SUBTRACT CPP /YX /Yc /Yu

 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32

 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32

@@ -70,7 +70,7 @@
 # PROP Ignore_Export_Lib 0

 # PROP Target_Dir ""

 # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c

-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /FD /GZ /c

+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILING_FOR_WINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /FD /GZ /c

 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32

 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32

 # ADD BASE RSC /l 0x409 /d "_DEBUG"

diff --git a/expat/lib/expat_static.dsp b/expat/lib/expat_static.dsp
index ca39bc0..33e1a0b 100644
--- a/expat/lib/expat_static.dsp
+++ b/expat/lib/expat_static.dsp
@@ -41,7 +41,7 @@
 # PROP Intermediate_Dir "..\win32\tmp\Release_static"

 # PROP Target_Dir ""

 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c

-# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /FD /c

+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILING_FOR_WINDOWS" /FD /c

 # SUBTRACT CPP /YX

 # ADD BASE RSC /l 0x1009 /d "NDEBUG"

 # ADD RSC /l 0x409 /d "NDEBUG"

@@ -65,7 +65,7 @@
 # PROP Intermediate_Dir "..\win32\tmp\Debug_static"

 # PROP Target_Dir ""

 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c

-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "COMPILED_FROM_DSP" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c

+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "COMPILING_FOR_WINDOWS" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c

 # SUBTRACT CPP /YX

 # ADD BASE RSC /l 0x1009 /d "_DEBUG"

 # ADD RSC /l 0x409 /d "_DEBUG"

diff --git a/expat/lib/expatw.dsp b/expat/lib/expatw.dsp
index 77497b5..89106e6 100644
--- a/expat/lib/expatw.dsp
+++ b/expat/lib/expatw.dsp
@@ -43,7 +43,7 @@
 # PROP Ignore_Export_Lib 0

 # PROP Target_Dir ""

 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c

-# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FD /c

+# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "COMPILING_FOR_WINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FD /c

 # SUBTRACT CPP /YX /Yc /Yu

 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32

 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32

@@ -70,7 +70,7 @@
 # PROP Ignore_Export_Lib 0

 # PROP Target_Dir ""

 # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c

-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c

+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILING_FOR_WINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c

 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32

 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32

 # ADD BASE RSC /l 0x409 /d "_DEBUG"

diff --git a/expat/lib/expatw_static.dsp b/expat/lib/expatw_static.dsp
index f13dd72..a464a82 100644
--- a/expat/lib/expatw_static.dsp
+++ b/expat/lib/expatw_static.dsp
@@ -41,7 +41,7 @@
 # PROP Intermediate_Dir "..\win32\tmp\Release-w_static"

 # PROP Target_Dir ""

 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c

-# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /D "XML_UNICODE_WCHAR_T" /FD /c

+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILING_FOR_WINDOWS" /D "XML_UNICODE_WCHAR_T" /FD /c

 # SUBTRACT CPP /YX

 # ADD BASE RSC /l 0x1009 /d "NDEBUG"

 # ADD RSC /l 0x409 /d "NDEBUG"

@@ -65,7 +65,7 @@
 # PROP Intermediate_Dir "..\win32\tmp\Debug-w_static"

 # PROP Target_Dir ""

 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c

-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c

+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "COMPILING_FOR_WINDOWS" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c

 # SUBTRACT CPP /YX

 # ADD BASE RSC /l 0x1009 /d "_DEBUG"

 # ADD RSC /l 0x409 /d "_DEBUG"

diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c
index 2d0bd3b..c0e8f6e 100644
--- a/expat/lib/xmlparse.c
+++ b/expat/lib/xmlparse.c
@@ -6,11 +6,18 @@
 #include <string.h>                     /* memset(), memcpy() */
 #include <assert.h>
 #include <limits.h>                     /* UINT_MAX */
-#include <time.h>                       /* time() */
+
+#ifdef COMPILING_FOR_WINDOWS
+#define getpid GetCurrentProcessId
+#else
+#include <sys/time.h>                   /* gettimeofday() */
+#include <sys/types.h>                  /* getpid() */
+#include <unistd.h>                     /* getpid() */
+#endif
 
 #define XML_BUILDING_EXPAT 1
 
-#ifdef COMPILED_FROM_DSP
+#ifdef COMPILING_FOR_WINDOWS
 #include "winconfig.h"
 #elif defined(MACOS_CLASSIC)
 #include "macconfig.h"
@@ -20,7 +27,7 @@
 #include "watcomconfig.h"
 #elif defined(HAVE_EXPAT_CONFIG_H)
 #include <expat_config.h>
-#endif /* ndef COMPILED_FROM_DSP */
+#endif /* ndef COMPILING_FOR_WINDOWS */
 
 #include "ascii.h"
 #include "expat.h"
@@ -432,7 +439,7 @@
 getElementType(XML_Parser parser, const ENCODING *enc,
                const char *ptr, const char *end);
 
-static unsigned long generate_hash_secret_salt(void);
+static unsigned long generate_hash_secret_salt(XML_Parser parser);
 static XML_Bool startParsing(XML_Parser parser);
 
 static XML_Parser
@@ -691,11 +698,38 @@
 };
 
 static unsigned long
-generate_hash_secret_salt(void)
+gather_time_entropy(void)
 {
-  unsigned int seed = time(NULL) % UINT_MAX;
-  srand(seed);
-  return rand();
+#ifdef COMPILING_FOR_WINDOWS
+  FILETIME ft;
+  GetSystemTimeAsFileTime(&ft); /* never fails */
+  return ft.dwHighDateTime ^ ft.dwLowDateTime;
+#else
+  struct timeval tv;
+  int gettimeofday_res;
+
+  gettimeofday_res = gettimeofday(&tv, NULL);
+  assert (gettimeofday_res == 0);
+
+  /* Microseconds time is <20 bits entropy */
+  return tv.tv_usec;
+#endif
+}
+
+static unsigned long
+generate_hash_secret_salt(XML_Parser parser)
+{
+  /* Process ID is 0 bits entropy if attacker has local access
+   * XML_Parser address is few bits of entropy if attacker has local access */
+  const unsigned long entropy =
+      gather_time_entropy() ^ getpid() ^ (unsigned long)parser;
+
+  /* Factors are 2^31-1 and 2^61-1 (Mersenne primes M31 and M61) */
+  if (sizeof(unsigned long) == 4) {
+    return entropy * 2147483647;
+  } else {
+    return entropy * 2305843009213693951;
+  }
 }
 
 static XML_Bool  /* only valid for root parser */
@@ -703,7 +737,7 @@
 {
     /* hash functions must be initialized before setContext() is called */
     if (hash_secret_salt == 0)
-      hash_secret_salt = generate_hash_secret_salt();
+      hash_secret_salt = generate_hash_secret_salt(parser);
     if (ns) {
       /* implicit context only set for root parser, since child
          parsers (i.e. external entity parsers) will inherit it
diff --git a/expat/lib/xmlrole.c b/expat/lib/xmlrole.c
index 44772e2..f6e66ab 100644
--- a/expat/lib/xmlrole.c
+++ b/expat/lib/xmlrole.c
@@ -4,7 +4,7 @@
 
 #include <stddef.h>
 
-#ifdef COMPILED_FROM_DSP
+#ifdef COMPILING_FOR_WINDOWS
 #include "winconfig.h"
 #elif defined(MACOS_CLASSIC)
 #include "macconfig.h"
@@ -16,7 +16,7 @@
 #ifdef HAVE_EXPAT_CONFIG_H
 #include <expat_config.h>
 #endif
-#endif /* ndef COMPILED_FROM_DSP */
+#endif /* ndef COMPILING_FOR_WINDOWS */
 
 #include "expat_external.h"
 #include "internal.h"
diff --git a/expat/lib/xmltok.c b/expat/lib/xmltok.c
index bf09dfc..5d1d2b4 100644
--- a/expat/lib/xmltok.c
+++ b/expat/lib/xmltok.c
@@ -4,7 +4,7 @@
 
 #include <stddef.h>
 
-#ifdef COMPILED_FROM_DSP
+#ifdef COMPILING_FOR_WINDOWS
 #include "winconfig.h"
 #elif defined(MACOS_CLASSIC)
 #include "macconfig.h"
@@ -16,7 +16,7 @@
 #ifdef HAVE_EXPAT_CONFIG_H
 #include <expat_config.h>
 #endif
-#endif /* ndef COMPILED_FROM_DSP */
+#endif /* ndef COMPILING_FOR_WINDOWS */
 
 #include "expat_external.h"
 #include "internal.h"
diff --git a/expat/tests/runtests.dsp b/expat/tests/runtests.dsp
index a5aa234..e9965ca 100644
--- a/expat/tests/runtests.dsp
+++ b/expat/tests/runtests.dsp
@@ -42,7 +42,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\lib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "COMPILED_FROM_DSP" /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\lib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "COMPILING_FOR_WINDOWS" /FD /c
 # SUBTRACT CPP /YX
 # ADD BASE RSC /l 0x1009 /d "NDEBUG"
 # ADD RSC /l 0x1009 /d "NDEBUG"
@@ -67,7 +67,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "COMPILED_FROM_DSP" /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "COMPILING_FOR_WINDOWS" /FD /GZ /c
 # SUBTRACT CPP /YX
 # ADD BASE RSC /l 0x1009 /d "_DEBUG"
 # ADD RSC /l 0x1009 /d "_DEBUG"
diff --git a/expat/xmlwf/xmlfile.c b/expat/xmlwf/xmlfile.c
index 99eeeaa..86880f2 100644
--- a/expat/xmlwf/xmlfile.c
+++ b/expat/xmlwf/xmlfile.c
@@ -8,7 +8,7 @@
 #include <string.h>
 #include <fcntl.h>
 
-#ifdef COMPILED_FROM_DSP
+#ifdef COMPILING_FOR_WINDOWS
 #include "winconfig.h"
 #elif defined(MACOS_CLASSIC)
 #include "macconfig.h"
@@ -18,7 +18,7 @@
 #include "watcomconfig.h"
 #elif defined(HAVE_EXPAT_CONFIG_H)
 #include <expat_config.h>
-#endif /* ndef COMPILED_FROM_DSP */
+#endif /* ndef COMPILING_FOR_WINDOWS */
 
 #include "expat.h"
 #include "xmlfile.h"
diff --git a/expat/xmlwf/xmlwf.dsp b/expat/xmlwf/xmlwf.dsp
index 52f4eec..3af1abb 100755
--- a/expat/xmlwf/xmlwf.dsp
+++ b/expat/xmlwf/xmlwf.dsp
@@ -42,7 +42,7 @@
 # PROP Ignore_Export_Lib 0

 # PROP Target_Dir "."

 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c

-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILED_FROM_DSP" /FD /c

+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILING_FOR_WINDOWS" /FD /c

 # SUBTRACT CPP /YX /Yc /Yu

 # ADD BASE RSC /l 0x809 /d "NDEBUG"

 # ADD RSC /l 0x409 /d "NDEBUG"

@@ -68,7 +68,7 @@
 # PROP Ignore_Export_Lib 0

 # PROP Target_Dir "."

 # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c

-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /I "..\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILED_FROM_DSP" /FD /c

+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /I "..\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILING_FOR_WINDOWS" /FD /c

 # SUBTRACT CPP /Fr /YX

 # ADD BASE RSC /l 0x809 /d "_DEBUG"

 # ADD RSC /l 0x409 /d "_DEBUG"