platform/upstream/lmdb.git
10 years agoFix prev commit for env_sync0
Howard Chu [Sun, 21 Dec 2014 00:13:50 +0000 (00:13 +0000)]
Fix prev commit for env_sync0

10 years agoHack for potential ext3/ext4 corruption issue
Howard Chu [Thu, 18 Dec 2014 04:38:53 +0000 (04:38 +0000)]
Hack for potential ext3/ext4 corruption issue

Use regular fsync() if we think this commit grew the DB file.

10 years agoFix MDB_APPEND doc
Howard Chu [Mon, 15 Dec 2014 20:40:59 +0000 (20:40 +0000)]
Fix MDB_APPEND doc

We actually compare the new key against the last key, to prevent
corruption.

10 years agomake clean: remove *.lo
Hallvard Furuseth [Sat, 13 Dec 2014 19:35:08 +0000 (20:35 +0100)]
make clean: remove *.lo

10 years agoTry to avoid an invalid datafile after failed init
Hallvard Furuseth [Mon, 8 Dec 2014 08:56:36 +0000 (09:56 +0100)]
Try to avoid an invalid datafile after failed init

10 years agoClarify mdb_dbi_open doc
Howard Chu [Mon, 8 Dec 2014 03:21:09 +0000 (03:21 +0000)]
Clarify mdb_dbi_open doc

The concurrency restriction is on threads within a single process.
Multiple processes can use mdb_dbi_open without affecting each other.

10 years agoC90-compatible code for SysV semaphores
Hallvard Furuseth [Fri, 5 Dec 2014 20:00:21 +0000 (21:00 +0100)]
C90-compatible code for SysV semaphores

10 years agoITS#7987 fix excessive space for single write txn
Leo Yuriev [Fri, 5 Dec 2014 19:30:31 +0000 (19:30 +0000)]
ITS#7987 fix excessive space for single write txn

10 years agoITS#7994 fix prev commit
Howard Chu [Fri, 5 Dec 2014 19:15:41 +0000 (19:15 +0000)]
ITS#7994 fix prev commit

Strip docs promising behaviors that we don't promise to hold.
Strip MDB_txnid_t typedef.

10 years agoITS#7994 Access to current transaction ID.
David Barbour [Fri, 5 Dec 2014 17:18:30 +0000 (11:18 -0600)]
ITS#7994 Access to current transaction ID.

I, David Barbour, hereby place the following modifications to OpenLDAP
Software (and only these modifications) into the public domain. Hence,
these modifications may be freely used and/or redistributed for any
purpose with or without attribution and/or other notice.

10 years agoFix SysV semaphores - repair mti_txnid.
Hallvard Furuseth [Fri, 5 Dec 2014 17:18:53 +0000 (18:18 +0100)]
Fix SysV semaphores - repair mti_txnid.

Similar to 443a7e40c4280cfd07cbf80c5de62ea072b136e3.

10 years agoFor ITS#7789: Ensure mapsize >= pages in use.
Hallvard Furuseth [Wed, 3 Dec 2014 11:37:55 +0000 (12:37 +0100)]
For ITS#7789: Ensure mapsize >= pages in use.

Check new mapsizes against mm_last_pg.  Move
mdb_env_init_meta0() so it can set mm_last_pg earlier.

10 years agoFix WIN32 -> _WIN32
Hallvard Furuseth [Wed, 3 Dec 2014 11:27:53 +0000 (12:27 +0100)]
Fix WIN32 -> _WIN32

10 years agomdb_strerror: Silence warning @ Windows
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
mdb_strerror: Silence warning @ Windows

10 years agoFix comments
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
Fix comments

10 years agoClean up SysV semaphore code.
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
Clean up SysV semaphore code.

Change MDB_LOCK_FORMAT to differ from Posix semaphores/mutexes.
Do not use array/member length 0 for MDB_txninfo.mt2.

10 years agoFix robust mutexes - repair mti_txnid.
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
Fix robust mutexes - repair mti_txnid.

Broken by e3b6c359a935283c21e1fd7d03b790d87d53b933, if
commit() crashes in write_meta before setting mti_txnid.

10 years agoSimplify recent changes a bit.
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
Simplify recent changes a bit.

10 years agoITS#7961,#7987 Re-fix txn init.
Hallvard Furuseth [Sat, 22 Nov 2014 21:56:31 +0000 (22:56 +0100)]
ITS#7961,#7987 Re-fix txn init.

More fallout from 4d02c741b120786df1b87ee9ed49c1d3f9bc7522:
Don't modify another thread's write txn. Reinit me_txn0 fully.

10 years agoITS#7971 LMDB: clarification in mdb_txn_renew0().
leo@yuriev.ru [Fri, 17 Oct 2014 22:46:53 +0000 (22:46 +0000)]
ITS#7971 LMDB: clarification in mdb_txn_renew0().

10 years agoITS#7970 LMDB: Critical Heisenbug
leo@yuriev.ru [Fri, 17 Oct 2014 22:35:41 +0000 (22:35 +0000)]
ITS#7970 LMDB: Critical Heisenbug

Inconsistent reading & SIGSEGV due to the race condition.

10 years agoITS#7969 LMDB: volatile & __synchronize().
leo@yuriev.ru [Fri, 17 Oct 2014 22:22:39 +0000 (22:22 +0000)]
ITS#7969 LMDB: volatile & __synchronize().

Globally shared fields of meta-data are not 'volatile'.

10 years agoITS#7959 fix prev commit
Howard Chu [Wed, 8 Oct 2014 18:25:27 +0000 (19:25 +0100)]
ITS#7959 fix prev commit

fstat returns -1, not an errno. Move code into its own function
for reuse.

10 years agoITS#7961 fix txn init
Howard Chu [Sat, 4 Oct 2014 20:48:49 +0000 (21:48 +0100)]
ITS#7961 fix txn init

More fallout from 4d02c741b120786df1b87ee9ed49c1d3f9bc7522

10 years agoITS#7959 Check fstat return value
Jean-Christophe DUBOIS [Fri, 3 Oct 2014 18:24:25 +0000 (20:24 +0200)]
ITS#7959 Check fstat return value

Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
10 years agoITS#7841 trivial cleanup
Leo Yuriev [Thu, 4 Sep 2014 20:19:16 +0000 (00:19 +0400)]
ITS#7841 trivial cleanup

TRIVIA - lmdb: clean testdb-dir while "make test".

10 years agoITS#7956 fix compact of empty env
Howard Chu [Thu, 2 Oct 2014 21:11:43 +0000 (22:11 +0100)]
ITS#7956 fix compact of empty env

10 years agoITS#7955, #7671 fix MDB_PREV_DUP
Howard Chu [Thu, 2 Oct 2014 20:58:20 +0000 (21:58 +0100)]
ITS#7955, #7671 fix MDB_PREV_DUP

10 years agoITS#7953 .gitignore *.lo
Howard Chu [Thu, 2 Oct 2014 20:35:15 +0000 (21:35 +0100)]
ITS#7953 .gitignore *.lo

10 years agoITS#7952 .gitignore mdb_dump/load
Howard Chu [Thu, 2 Oct 2014 20:33:35 +0000 (21:33 +0100)]
ITS#7952 .gitignore mdb_dump/load

10 years agoDon't use -fPIC for static lib
Howard Chu [Wed, 1 Oct 2014 20:00:03 +0000 (21:00 +0100)]
Don't use -fPIC for static lib

10 years agoUse robust mutexes by default
Howard Chu [Wed, 1 Oct 2014 19:58:15 +0000 (20:58 +0100)]
Use robust mutexes by default

Making it optional on pthreads just complicates things;
they're always robust on other implementations

10 years agoUse SysV semaphores instead of POSIX
Howard Chu [Sun, 20 Jul 2014 18:08:55 +0000 (11:08 -0700)]
Use SysV semaphores instead of POSIX

Since they can cleanup after themselves on process exit

10 years agoMust do dlist_free before releasing Wmutex
Howard Chu [Sun, 20 Jul 2014 15:10:34 +0000 (08:10 -0700)]
Must do dlist_free before releasing Wmutex

10 years agoMDB_ROBUST: Use MDB_PID_T. Drop a wmutex variable.
Hallvard Furuseth [Sun, 20 Jul 2014 14:42:04 +0000 (16:42 +0200)]
MDB_ROBUST: Use MDB_PID_T. Drop a wmutex variable.

10 years agoFree write mutex earlier in txn_reset0
Howard Chu [Wed, 16 Jul 2014 16:24:45 +0000 (09:24 -0700)]
Free write mutex earlier in txn_reset0

10 years agoAdd MDB_ROBUST
Hallvard Furuseth [Wed, 16 Jul 2014 14:15:58 +0000 (07:15 -0700)]
Add MDB_ROBUST

10 years agoAndroid also only has memalign
Howard Chu [Thu, 25 Sep 2014 18:25:56 +0000 (19:25 +0100)]
Android also only has memalign

10 years agonew date
Howard Chu [Sat, 20 Sep 2014 06:24:32 +0000 (07:24 +0100)]
new date

10 years agoITS#7943 reinit txn flags
Howard Chu [Fri, 19 Sep 2014 00:45:43 +0000 (01:45 +0100)]
ITS#7943 reinit txn flags

When reusing the main write txn

10 years agoPlug leak in 4d02c741b120786df1b87ee9ed49c1d3f9bc7522
Howard Chu [Thu, 18 Sep 2014 00:22:02 +0000 (01:22 +0100)]
Plug leak in 4d02c741b120786df1b87ee9ed49c1d3f9bc7522

Free writer txn on env_close

10 years agoSilence some clang warnings
Howard Chu [Tue, 16 Sep 2014 20:54:07 +0000 (21:54 +0100)]
Silence some clang warnings

10 years agoRelease 0.9.14
Howard Chu [Mon, 15 Sep 2014 18:48:32 +0000 (19:48 +0100)]
Release 0.9.14

10 years agoChange retry to num times 60. Testing shows that on a known dataset, this has the...
Quanah Gibson-Mount [Sat, 13 Sep 2014 21:21:17 +0000 (16:21 -0500)]
Change retry to num times 60.  Testing shows that on a known dataset, this has the same growth behavior as 2.4.39, while num times 20 resulted in significant growth.

10 years agoMore for me_pgoldest
Howard Chu [Tue, 9 Sep 2014 18:44:23 +0000 (19:44 +0100)]
More for me_pgoldest

Leave it in main env struct, it doesn't need to be rolled back
with nested txns.

10 years agoRemember oldest reader txnid
Howard Chu [Tue, 9 Sep 2014 18:40:05 +0000 (19:40 +0100)]
Remember oldest reader txnid

Don't walk the readers table unless we really need to.

10 years agoUse a single write txn
Howard Chu [Thu, 4 Sep 2014 09:40:11 +0000 (10:40 +0100)]
Use a single write txn

10 years agoITS#7913 cleanup
Howard Chu [Sun, 24 Aug 2014 20:18:03 +0000 (21:18 +0100)]
ITS#7913 cleanup

we already checked for data == NULL, drop unnecessary if

10 years agoMore for MIPS
Howard Chu [Fri, 22 Aug 2014 00:40:20 +0000 (17:40 -0700)]
More for MIPS

Move CACHEFLUSH, avoid unnecessary if()

10 years agoPartially revert ada26306992babeccad0c5443fbd76e28dd24cd6
Howard Chu [Mon, 18 Aug 2014 03:44:53 +0000 (20:44 -0700)]
Partially revert ada26306992babeccad0c5443fbd76e28dd24cd6

Of course, MacOSX only has posix_memalign, and only in recent versions.
(Older versions could use valloc instead. That precludes ever changing
the LMDB pagesize to be different from the OS pagesize.) Not all that
crucial since it only affects mdb_env_copyfd1.

10 years agoMicrooptimize loose pages
Hallvard Furuseth [Sat, 16 Aug 2014 23:50:32 +0000 (01:50 +0200)]
Microoptimize loose pages

10 years agoFix loose pages in mdb_freelist_save().
Hallvard Furuseth [Sat, 16 Aug 2014 22:29:12 +0000 (00:29 +0200)]
Fix loose pages in mdb_freelist_save().

Leaving them in dirty_list caused breakage.  Instead merge them
into me_pghead at the end, when no more pages will be allocated.

10 years agoSplit out mdb_midl_xmerge, add MDB_IDL_ALLOCLEN
Hallvard Furuseth [Sat, 16 Aug 2014 09:34:44 +0000 (11:34 +0200)]
Split out mdb_midl_xmerge, add MDB_IDL_ALLOCLEN

10 years agoITS#7917
Howard Chu [Mon, 11 Aug 2014 18:01:20 +0000 (11:01 -0700)]
ITS#7917

10 years agoITS#7917 fix mdb_dbi_open
Howard Chu [Mon, 11 Aug 2014 18:00:11 +0000 (11:00 -0700)]
ITS#7917 fix mdb_dbi_open

Don't let dummy go out of scope

10 years agoJust use memalign, not posix_memalign
Howard Chu [Thu, 7 Aug 2014 18:06:53 +0000 (11:06 -0700)]
Just use memalign, not posix_memalign

Everything has it. Solaris doesn't have posix_memalign.

10 years agoMore for MIPS
Howard Chu [Mon, 4 Aug 2014 18:40:24 +0000 (11:40 -0700)]
More for MIPS

Do a cacheflush after writing data pages, separate from meta's cacheflush

10 years agoITS#7793 more for branch key update
Howard Chu [Mon, 4 Aug 2014 16:26:35 +0000 (09:26 -0700)]
ITS#7793 more for branch key update

10 years agoITS#7793 doc update, again
Howard Chu [Mon, 4 Aug 2014 12:13:29 +0000 (05:13 -0700)]
ITS#7793 doc update, again

10 years agoITS#7793 update branch key if needed
Howard Chu [Mon, 4 Aug 2014 11:57:53 +0000 (04:57 -0700)]
ITS#7793 update branch key if needed

10 years agoMore for MIPS
Howard Chu [Sat, 2 Aug 2014 17:33:35 +0000 (10:33 -0700)]
More for MIPS

Paranoia for 3630066843b7ca6b2cd12911d3e2fe3314cd4549 do the
cacheflush before setting mti_txnid.

10 years agoITS#7913 mdb_cursor_get(*_DUP) cleanup
Howard Chu [Thu, 31 Jul 2014 16:59:52 +0000 (09:59 -0700)]
ITS#7913 mdb_cursor_get(*_DUP) cleanup

FIRST_DUP/LAST_DUP should succeed even on non-duplicate values
PREV_DUP should reset cursor's EOF flag.

10 years agoFix MIPS cache coherency on Linux
Howard Chu [Sun, 27 Jul 2014 01:16:02 +0000 (18:16 -0700)]
Fix MIPS cache coherency on Linux

MIPS chips require manual control of on-chip caches. The cacheflush
syscall being used here only exists on MIPS Linux, other OSs will
require revisiting.

10 years agoUpdate date
Howard Chu [Thu, 24 Jul 2014 11:15:45 +0000 (04:15 -0700)]
Update date

10 years agomore for mdb_cursor_count
Howard Chu [Thu, 24 Jul 2014 11:13:55 +0000 (04:13 -0700)]
more for mdb_cursor_count

return MDB_NOTFOUND if the cursor is empty

10 years agoFix mdb_copy & co when MDB pagesize < OS pagesize
Hallvard Furuseth [Wed, 9 Jul 2014 19:38:45 +0000 (21:38 +0200)]
Fix mdb_copy & co when MDB pagesize < OS pagesize

10 years agoITS#7789 doc updates
Howard Chu [Thu, 24 Jul 2014 00:31:34 +0000 (17:31 -0700)]
ITS#7789 doc updates

10 years agoITS#7789 Fix mdb_env_write_meta().
Hallvard Furuseth [Thu, 24 Jul 2014 00:24:31 +0000 (17:24 -0700)]
ITS#7789 Fix mdb_env_write_meta().

Always write mapsize = max(other metapage:mapsize, env:mapsize).

10 years agoRevert ITS#7789 commits, let's try this again.
Howard Chu [Thu, 24 Jul 2014 00:10:41 +0000 (17:10 -0700)]
Revert ITS#7789 commits, let's try this again.

Revert "ITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment."
Revert "ITS#7789 more"
Revert "Revert "ITS#7789 update RESIZED errmsg text""
Revert "ITS#7789 update RESIZED errmsg text"
Revert "ITS#7789 persist mapsize changes"

This reverts commit 02285aca58f5629547263ba09e7dd685dcf6b4b5.
This reverts commit 38e71c68de2ad61fb0fd72fd40214fd9a94479b9.
This reverts commit a5e4eecb1e59e9645113bb4c63d06a23a2c4bdf9.
This reverts commit d8e18551c3f03d5205f4dc8d1711e494d3814b17.
This reverts commit 5926e54bba7c976e0837221efb20cbff384207b8.

10 years agoFix env_open mode bits
Howard Chu [Tue, 22 Jul 2014 01:20:31 +0000 (18:20 -0700)]
Fix env_open mode bits

10 years agoFix mdb_cursor_count, reject uninit'd cursor
Howard Chu [Mon, 21 Jul 2014 15:33:59 +0000 (08:33 -0700)]
Fix mdb_cursor_count, reject uninit'd cursor

10 years agoSilence prototype warnings
Howard Chu [Mon, 21 Jul 2014 15:11:33 +0000 (08:11 -0700)]
Silence prototype warnings

10 years agoTypo
Howard Chu [Mon, 14 Jul 2014 16:53:53 +0000 (09:53 -0700)]
Typo

10 years agoITS#7896 fix for mdb_env_map
Howard Chu [Mon, 14 Jul 2014 16:51:16 +0000 (09:51 -0700)]
ITS#7896 fix for mdb_env_map

Don't pass non-NULL map address unless MDB_FIXEDMAP was used.

10 years agoMore for cursor EOF
Howard Chu [Wed, 9 Jul 2014 22:03:54 +0000 (15:03 -0700)]
More for cursor EOF

Must also set in sub-cursor if deleting entire subDB

10 years agoZero-init copy2 writebuf
Howard Chu [Wed, 9 Jul 2014 19:05:37 +0000 (12:05 -0700)]
Zero-init copy2 writebuf

10 years agoMDB_MAXKEYSIZE = 0 (dynamic value) when MDB_DEVEL
Hallvard Furuseth [Wed, 9 Jul 2014 18:18:08 +0000 (20:18 +0200)]
MDB_MAXKEYSIZE = 0 (dynamic value) when MDB_DEVEL

10 years agoMDB_DEVEL doxygen fix
Hallvard Furuseth [Wed, 9 Jul 2014 18:17:13 +0000 (20:17 +0200)]
MDB_DEVEL doxygen fix

10 years agoITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment.
Hallvard Furuseth [Wed, 9 Jul 2014 18:16:33 +0000 (20:16 +0200)]
ITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment.

10 years agoWindows fixes
Howard Chu [Wed, 9 Jul 2014 17:22:25 +0000 (10:22 -0700)]
Windows fixes

Always set the filesize when opening for writes. Otherwise
can't use backups from mdb_copy.

10 years agoWindows compat
Howard Chu [Wed, 9 Jul 2014 16:31:49 +0000 (09:31 -0700)]
Windows compat

We mainly use Win32 functions, so cannot just use C-runtime strerror
to return error messages. We have to use Win32-specific messages.
Unfortunately, we document the API to return C-runtime error codes,
so we can't just switch to all Win32 error codes.

10 years agoFix loading of printable dump
Howard Chu [Wed, 9 Jul 2014 16:16:03 +0000 (09:16 -0700)]
Fix loading of printable dump

Off-by-one in end check, would complain on valid input.

10 years agoITS#7789 more
Howard Chu [Wed, 9 Jul 2014 13:54:32 +0000 (06:54 -0700)]
ITS#7789 more

persist size changes from env_open() as well. This was the
original behavior.

10 years agoRevert "ITS#7789 update RESIZED errmsg text"
Howard Chu [Wed, 9 Jul 2014 13:17:54 +0000 (06:17 -0700)]
Revert "ITS#7789 update RESIZED errmsg text"

This reverts commit d8e18551c3f03d5205f4dc8d1711e494d3814b17.
And partially reverts mapsize check. Only mapsize increases are relevant.

10 years agoITS#7825 more
Howard Chu [Wed, 9 Jul 2014 12:13:10 +0000 (05:13 -0700)]
ITS#7825 more

Set read txn's dbiseqs to env's. Set child txn's dbiseqs to parent's.
Simplify DBI_CHANGED test, no need to check md_name. No-op dbi_close
of already closed handle.

10 years agoUpdates #7789, #7825
Howard Chu [Wed, 9 Jul 2014 04:40:11 +0000 (21:40 -0700)]
Updates #7789, #7825

10 years agoITS#7825 more
Howard Chu [Wed, 9 Jul 2014 04:31:48 +0000 (21:31 -0700)]
ITS#7825 more

only update dbiseq in dbi_open on write txns

10 years agoITS#7825 tweak prev commit
Howard Chu [Wed, 9 Jul 2014 04:22:07 +0000 (21:22 -0700)]
ITS#7825 tweak prev commit

dbiseqs are only checked in write txns so omit from read txns

10 years agoITS#7825 add MDB_BAD_DBI error code
Howard Chu [Wed, 9 Jul 2014 04:02:40 +0000 (21:02 -0700)]
ITS#7825 add MDB_BAD_DBI error code

Use DBI sequence numbers to detect DBIs being closed while in use.

10 years agoITS#7789 update RESIZED errmsg text
Howard Chu [Wed, 9 Jul 2014 03:05:31 +0000 (20:05 -0700)]
ITS#7789 update RESIZED errmsg text

10 years agoITS#7789 persist mapsize changes
Howard Chu [Wed, 9 Jul 2014 02:06:45 +0000 (19:06 -0700)]
ITS#7789 persist mapsize changes

Write decreases too, not just increases. Check for any size change
that was not requested by this process.

10 years agoUpdate LMDB version date/info
Howard Chu [Tue, 8 Jul 2014 23:27:26 +0000 (16:27 -0700)]
Update LMDB version date/info

10 years agoITS#7892 Fix MacOSX section name
Howard Chu [Tue, 8 Jul 2014 23:27:03 +0000 (16:27 -0700)]
ITS#7892 Fix MacOSX section name

10 years agoITS#7713 cleanups
Hallvard Furuseth [Tue, 8 Jul 2014 22:01:18 +0000 (15:01 -0700)]
ITS#7713 cleanups

'#ifdef MDB_DEVEL' -> '#if MDB_DEVEL'
Fix comments, use actual PAGEBASE macro as originally intended.
Actually enable 64K pages. Set MDB_DATA_VERSION for testing only.

10 years agoFixes for loose pages
Hallvard Furuseth [Tue, 8 Jul 2014 18:52:53 +0000 (11:52 -0700)]
Fixes for loose pages

mdb_txn_commit(child): Give loose pages to parent.
Use a pointer beyond the page header instead of mp_next, so
we will not need to save/restore mp_pgno. This avoids a crash
caused by references to mp_pgno.

10 years agoRe-fix cursor EOF
Howard Chu [Tue, 8 Jul 2014 18:54:24 +0000 (11:54 -0700)]
Re-fix cursor EOF

Fix in 534dcc721287cfe1051191a5cd7d3df6cf1dc409 was in wrong place

10 years agoITS#7713 handle 65536 byte page size
Howard Chu [Mon, 7 Jul 2014 16:12:22 +0000 (09:12 -0700)]
ITS#7713 handle 65536 byte page size

Fix mp_lower/mp_upper to exclude PAGEHDRSZ, which means our
max mp_upper is now pagesize - PAGEHDRSZ and won't overflow.
Currently must define MDB_DEVEL to use. Will be default for
LMDB 1.0/OpenLDAP 2.5

10 years agoSet xcursor EOF after deleting last entry
Howard Chu [Tue, 8 Jul 2014 00:13:51 +0000 (17:13 -0700)]
Set xcursor EOF after deleting last entry

10 years agoCompacting copy doesn't need to snapshot metas
Howard Chu [Mon, 7 Jul 2014 00:47:25 +0000 (17:47 -0700)]
Compacting copy doesn't need to snapshot metas

10 years agoWindows fixes
Howard Chu [Sun, 6 Jul 2014 14:49:38 +0000 (07:49 -0700)]
Windows fixes