summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/expat/xmlwf/win32filemap.c
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2020-10-15 04:28:42 +1100
committer Vas Crabb <vas@vastheman.com>2020-10-15 04:28:42 +1100
commitd256f069a5aa30bf5ffcfc4b73047ce0f372ea10 (patch)
tree8df1bd2e70d7e15e59928203d0eb687c82307bff /3rdparty/expat/xmlwf/win32filemap.c
parent13850f3011e000307925aefd918efe2f0ce6649d (diff)
-3rdparty/expat: Update to 2.2.10."
-Fixed tiny build (missing s11c_bg_device) and unused lambda capture in emu/rendlay.cpp.
Diffstat (limited to '3rdparty/expat/xmlwf/win32filemap.c')
-rw-r--r--3rdparty/expat/xmlwf/win32filemap.c72
1 files changed, 47 insertions, 25 deletions
diff --git a/3rdparty/expat/xmlwf/win32filemap.c b/3rdparty/expat/xmlwf/win32filemap.c
index 41dc35b614d..0c9b7ecc5ff 100644
--- a/3rdparty/expat/xmlwf/win32filemap.c
+++ b/3rdparty/expat/xmlwf/win32filemap.c
@@ -1,19 +1,47 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file COPYING for copying permission.
+/*
+ __ __ _
+ ___\ \/ /_ __ __ _| |_
+ / _ \\ /| '_ \ / _` | __|
+ | __// \| |_) | (_| | |_
+ \___/_/\_\ .__/ \__,_|\__|
+ |_| XML parser
+
+ Copyright (c) 1997-2000 Thai Open Source Software Center Ltd
+ Copyright (c) 2000-2017 Expat development team
+ Licensed under the MIT license:
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to permit
+ persons to whom the Software is furnished to do so, subject to the
+ following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#define STRICT 1
#define WIN32_LEAN_AND_MEAN 1
#ifdef XML_UNICODE_WCHAR_T
-#ifndef XML_UNICODE
-#define XML_UNICODE
-#endif
+# ifndef XML_UNICODE
+# define XML_UNICODE
+# endif
#endif
#ifdef XML_UNICODE
-#define UNICODE
-#define _UNICODE
+# define UNICODE
+# define _UNICODE
#endif /* XML_UNICODE */
#include <windows.h>
#include <stdio.h>
@@ -25,8 +53,7 @@ static void win32perror(const TCHAR *);
int
filemap(const TCHAR *name,
void (*processor)(const void *, size_t, const TCHAR *, void *arg),
- void *arg)
-{
+ void *arg) {
HANDLE f;
HANDLE m;
DWORD size;
@@ -34,7 +61,7 @@ filemap(const TCHAR *name,
void *p;
f = CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
- FILE_FLAG_SEQUENTIAL_SCAN, NULL);
+ FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if (f == INVALID_HANDLE_VALUE) {
win32perror(name);
return 0;
@@ -42,11 +69,12 @@ filemap(const TCHAR *name,
size = GetFileSize(f, &sizeHi);
if (size == (DWORD)-1) {
win32perror(name);
+ CloseHandle(f);
return 0;
}
- if (sizeHi) {
- _ftprintf(stderr, _T("%s: bigger than 2Gb\n"), name);
- return 0;
+ if (sizeHi || (size > XML_MAX_CHUNK_LEN)) {
+ CloseHandle(f);
+ return 2; /* Cannot be passed to XML_Parse in one go */
}
/* CreateFileMapping barfs on zero length files */
if (size == 0) {
@@ -68,7 +96,7 @@ filemap(const TCHAR *name,
CloseHandle(f);
return 0;
}
- processor(p, size, name, arg);
+ processor(p, size, name, arg);
UnmapViewOfFile(p);
CloseHandle(m);
CloseHandle(f);
@@ -76,21 +104,15 @@ filemap(const TCHAR *name,
}
static void
-win32perror(const TCHAR *s)
-{
+win32perror(const TCHAR *s) {
LPVOID buf;
- if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
- | FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &buf,
- 0,
+ if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL, GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buf, 0,
NULL)) {
_ftprintf(stderr, _T("%s: %s"), s, buf);
fflush(stderr);
LocalFree(buf);
- }
- else
+ } else
_ftprintf(stderr, _T("%s: unknown Windows error\n"), s);
}