This is release 0.9.30 of Wine, a free implementation of Windows on Unix.

What's new in this release:
  - Many improvements to Direct3D shaders and state management.
  - Support for inter-process memory allocations.
  - OLE32 marshalling fixes.
  - Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.30.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.30.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/site/download

You will find documentation on

  http://www.winehq.org/site/documentation

You can also get the current source directly from the git or CVS
repositories. Check respectively http://www.winehq.org/site/git or
http://www.winehq.org/site/cvs for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at http://www.winehq.org/site/sending_patches

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Changes since 0.9.29:

Alasdair Sinclair (1):
      msvcrt: If we're at EOF in the buffer and we have pattern %n in format string we should not count the EOF in the total.

Alexandre Julliard (79):
      wrc: Added support for utf-8 codepage.
      ntdll/tests: Don't bother testing the port functions if creating the port failed.
      ntdll/tests: Fix exception test for CPUs that do segment limit checks differently.
      winealsa: Renamed the dlls/winmm/winealsa directory to dlls/winealsa.drv.
      winearts: Renamed the dlls/winmm/winearts directory to dlls/winearts.drv.
      wineaudioio: Renamed the dlls/winmm/wineaudioio directory to dlls/wineaudioio.drv.
      winecoreaudio: Renamed the dlls/winmm/winecoreaudio directory to dlls/winecoreaudio.drv.
      wineesd: Renamed the dlls/winmm/wineesd directory to dlls/wineesd.drv.
      winejack: Renamed the dlls/winmm/winejack directory to dlls/winejack.drv.
      winenas: Renamed the dlls/winmm/winenas directory to dlls/winenas.drv.
      wineoss: Renamed the dlls/winmm/wineoss directory to dlls/wineoss.drv.
      make_makefiles: Get rid of the rules for dll symlinks.
      ntdll: Compute the wait timeout only once in NTDLL_wait_for_multiple_objects.
      ntdll: Only return STATUS_USER_APC from a wait if a real user APC has been run.
      ntdll: Make sure that critical section waits are not interrupted.
      server: Allow suspended threads to run system APCs.
      preloader: Remove reserved ranges that we failed to allocate.
      preloader: Added printf format checking and fix some formats.
      ntdll: Moved the check for removable file in load_dll to the server.
      ntdll: Duplicate the mapping handle on the server side for NtMapViewOfSection.
      ntdll: Fix handling of 64-bit sizes in NtMapViewOfSection.
      ntdll: Make the virtual.c critical section uninterruptible by signals.
      server: Set the specified in/out buffer sizes on named pipes using SO_SND/RCVBUF.
      oleaut32/tests: Replace some macros by functions to reduce code size and compile time.
      loader: Fix git-describe invocation to work with old git versions.
      kernel32: Use the proper codepage for console functions.
      server: Properly wake the waiting threads when an APC is cancelled.
      server: Added mechanism for returning results of APC calls.
      server: Support queuing some APCs to a process instead of a thread.
      ntdll: Implementation of inter-process VirtualAllocEx and VirtualFreeEx.
      ntdll: Implementation of inter-process VirtualQueryEx.
      ntdll: Implementation of inter-process VirtualProtectEx.
      ntdll: Implementation of inter-process NtFlushVirtualMemory.
      ntdll: Implemented NtLockVirtualMemory and NtUnlockVirtualMemory.
      wmc: Added support for neutral languages.
      msvcrt: Export various locale and codepage variables.
      wmc: Use standard format for error messages.
      ntdll: Added a missing chunk in the NtLockVirtualMemory support.
      ntdll: Avoid heap allocation in fd cache. Fixed a couple of races.
      ntdll: Fix NtDuplicateObject to only close the file descriptor if it's in the same process.
      ntdll: Make the fd cache section an uninterruptible section.
      ntdll: Avoid heap allocations during thread creation.
      ntdll: Make the server signal mask global.
      ntdll: Block async signals during process init and thread creation.
      server: Print a trace when sending a signal to a thread.
      winecoreaudio.drv: Fix printf format warnings.
      ntdll: Move the LDT section to ntdll and make it an uninterruptible section.
      ntdll: Abuse RtlCreateUserThread to call the thread function for CreateThread directly.
      ntdll: Implementation of inter-process RtlCreateUserThread.
      ntdll: Implementation of inter-process NtMapViewOfSection and NtUnmapViewOfSection.
      ntdll: Get rid of the no longer used is_current_process function.
      ntdll: Avoid inter-process APCs when called for the process itself.
      Make.rules: Pass all idl source files to makedep.
      widl: Generate proxy/client/server files when requested explicitly even if they are empty.
      rpc.h: Include excpt.h, and windef.h in Wine so that the header compiles.
      widl: Include objbase.h so that generated proxy file compiles on Wine.
      sfc: We need to import sfc_os for the forwards to work properly.
      dinput: Undefine SW_MAX to avoid possible conflicts with winuser.h.
      wine/list.h: Add list_count function. Make some parameters const.
      widl: Use existing functions to retrieve attributes for typelibs.
      widl: Convert typelib lists to standard Wine lists.
      widl: Convert attribute lists to standard Wine lists.
      widl: Convert interface lists to standard Wine lists.
      widl: Convert function lists to standard Wine lists.
      widl: Convert variable lists to standard Wine lists.
      widl: Convert expression lists to standard Wine lists.
      make_makefiles: Ignore IDL_H_SRCS targets in all directories.
      oleaut32/tests: Add tmarshal test.
      oleaut32/tests: Fix the FSF address.
      ntdll: Properly handle embedded nulls in NTDLL_dbg_vprintf.
      include: Simplify the variable declarations in the makefile to allow make_makefiles to parse it.
      widl: Move support for stub arguments to typegen.c to make it usable for proxies too.
      widl: Move initialization of the stub buffer size into write_remoting_arguments().
      widl: Export a function to compute the proc format string size for a function.
      widl: Skip local functions when building format strings.
      widl: Fix possible crash in write_array_tfs.
      widl: Fix alignment check for struct members format string.
      widl: Store the interface id in _StubMsg.MaxCount for iid_is pointers.
      widl: Add support for some simple pointer types.

Anatoly Lyutin (5):
      kernel32: Add details in description function MultiByteToWideChar and WideCharToMultiByte.
      wineconsole: Add support for non-latin symbols with curses.
      kernel32: Add comment for  GetConsoleWindow.
      cmd: Remove incorrect return in WCMD_if().
      cmd: In function WCMD_goto() changed strcmp() to lstrcmpi().

Andrew Talbot (33):
      imaadp32.acm: Remove unused function.
      itss: Declare a function static.
      kernel32: Declare some functions static.
      msg711.acm: Remove unused function.
      msadp32.acm: Remove unused function.
      itss: Remove unused variable and associated dead code.
      msdmo: Declare a function static.
      mpr: Declare a variable static.
      mshtml: Declare a variable static.
      msacm32: Declare some variables static.
      msi: Remove unused variables.
      msi: Declare some functions static.
      msrle32: Declare some functions static.
      msxml3: Remove unused functions.
      msvcrt: Declare some items static.
      ntdll: Remove unused function.
      oleaut32: Remove unused items.
      msvcrt: Move static function from header into file where it is called.
      shell32: Remove unused variable.
      netapi32: Declare a variable static.
      objsel: Declare a variable static.
      ole32: Declare some functions static.
      odbc32: Declare a function static.
      oleaut32: Declare some items static.
      oledlg: Declare a function static.
      shlwapi: Uninitialized variable fix (Coverity).
      dmime: Remove unused variable.
      qcap: Fix a typo.
      qcap: Declare some items static.
      quartz: Declare a function static.
      riched20: Declare some functions static.
      rpcrt4: Declare some functions static.
      rsaenh: Declare some functions static.

Bang Jun-Young (6):
      advpack/tests: Fix typo.
      objbase.h: Fix typo in comment.
      winbase.h: Cosmetic changes.
      advapi32: Do not include unnecessary headers.
      msxml3: config.h police.
      wineoss.drv: config.h police.

Bill Medland (5):
      odbccp32: Add tests structure.
      odbccp32: Implement SQLInstallerError(W).
      odbccp32: Implement SQLGetInstalledDrivers.
      odbccp32: Remove A->W cross-call.
      odbccp32: Implement SQLGet/SetConfigMode.

Christoph Frick (6):
      dinput: Rename 'axe' to 'axis'.
      dinput: Use a struct ObjProps for the config of the device.
      dinput: Move the config for the buttons from the JoyDev into the JoystickImpl.
      dinput: Add a config for the axes.
      dinput: No longer check for value exceeding have(min|max) in map_axis.
      dinput: Calc more caps infos ahead and store it in JoystickImpl.

Clinton Stimpson (2):
      riched20: Fix modification state for several operations.
      riched20: Fix crash undoing a paste.

Detlef Riekenberg (20):
      winspool: Support monitors without a name.
      winspool: Support Xcv for ConfigurePortW.
      comdlg32: Move GetFileTitle(A/W/16) to filedlg.c, filedlg16.c.
      winspool/tests: Use a more generic name for a variable.
      winspool: Support xcv in DeletePortW.
      winspool: Support xcv in AddPortW.
      winspool: Improve trace for ClosePrinter.
      winspool: More error checks for XcvDataW.
      winspool/tests: Fix tests for EnumPrinters when the spooler is off.
      localspl/tests: Extend test for XcvDataPort_MonitorUI.
      localspl/tests: Add test for XcvDataPort_PortIsValid.
      localspl: Implement XcvOpenPort and XcvClosePort.
      localspl: Implement XcvDataPort.
      localspl: Implement PortIsValid for XcvDataPort.
      sfc_os: Add stub for sfc_os.dll.
      sfc: Forward SfcIsFileProtected to sfc_os.dll.
      kernel32/tests: Fix a declaration and use skip for the message.
      kernel32/tests: VirtualAllocEx not present in Win95.
      kernel32/tests: GetVolumeNameForMountPoint not present before w2k.
      winspool: Make fixme for PRINTER_ENUM_CONNECTIONS more silent.

Dmitry Timoshkov (18):
      winex11.drv: Force the fullscreen state update once the window is mapped.
      kernel32: Do not forget to cleanup if the test is skipped.
      wineconsole: Make some data const.
      wineconsole: Use CP_UNIXCP to translate strings to the system encoding.
      wineconsole: Fix a typo in the help message about correct backend names.
      gdi32: Print status of the hinting support in the debug log.
      user32: Add a simple DrawState test, make it pass under Wine.
      wined3d: Do not play with WS_VISIBLE, this causes unwanted mapping/unmapping of the window.
      winex11.drv: Fix the typos in the fullscreen state debug trace.
      user32: Remove MDI_AugmentFrameMenu call from WM_MDICREATE handler.
      user32: Simplify some maximized MDI child checks.
      user32: Remove redundant visibility checks of a maximized MDI child, add an explanation why we do that.
      user32: Some apps pass a color bitmap as a mask to CreateIconIndirect, convert it to b/w.
      comctl32: Fix the updown control test to pass under XP.
      gdi32: Add a GetDIBits test.
      gdi32: Add a simple SelectObject test for bitmaps.
      user32: Using DIB APIs to convert a DDB to monochrome is wrong, do it differently.
      user32: Do not use DIB APIs for bitmap bits in a device dependent format.

Duane Clark (1):
      treeview: Fix horizontal scrolling.

Eric Pouech (3):
      winedump: Fixed signature for dumping MDMP files.
      dbghelp: Removed unneeded code from rewrite of .gnu_link handling.
      msvcrt: Fix the internal flag computation for _open_osfhandle.

Felix Nawothnig (2):
      kernel32: Forward CopyLZFile() to LZCopy() instead of wrapping it.
      comctl32: Degrade ERR to WARN.

Francois Gouget (36):
      wininet: Consistenly use INTERNET_SetLastError().
      uninstaller: Add a Portuguese translation (contributed by Americo Jose Melo).
      wine.inf: We cannot create fake dlls for 16bit libraries. So remove ddeml.dll.
      rpcrt4: Give a proper name to some formerly reserved MIDL_STUB_MESSAGE fields.
      winmm/tests: Replace some '#if 0's with 'if (0)'s.
      dsound/tests: Replace some '#if 0's with 'if (0)'s.
      dsound/tests: The tests link with dsound.dll so use GetModuleHandle() instead of LoadLibrary().
      dsound/tests: Replace some '#if 0's with 'if (0)'s.
      tests: Add skip(), a function to warn that tests were skipped due to limitations of the environment or missing dependencies.
      d3d9/tests: Warn that tests were skipped if we could not load d3d9.dll.
      d3d8/tests: Warn that tests were skipped if we could not load d3d8.dll.
      xrandr: Small X11DRV_XRandR_(Get|Set)CurrentMode() code optimisations.
      odbccp32/tests: Add missing '\n' to an ok() call.
      tests: The non-gcc case was missing a forward declaration for winetest_skip().
      winspool.drv: Reorder a couple of functions and remove the forward declarations.
      d3d: Fix the D3DFMT_XXX constant declarations.
      localspl: Remove unneeded cast.
      usp10/tests: Use '%u' to print GetLastError().
      secur32: Use '%u' to print GetLastError().
      mcicda: Use '%u' to print GetLastError().
      ntdll/tests: Use '%u' to print GetLastError().
      winspool.drv: Use '%u' to print GetLastError().
      winmm/tests: Use '%u' to print GetLastError().
      shell32: There is no need to check strings for NULL when using debugstr_w().
      Don't put single quotes around '%s' when using the debugstr_*() functions.
      Assorted spelling fixes.
      shell32/tests: Add some more SHGetFileInfo() tests.
      shell32: Add proper support for SHGetFileInfo(SHGFI_ICONLOCATION | SHGFI_USEFILEATTRIBUTES).
      oleaut32/tests: Fix compilation on systems that don't support nameless structs (e.g. gcc 2.95).
      snmpapi: SnmpUtilDbgPrint() is a vararg and not an stdcall function.
      snmpapi: Add a missing '\n' trace.
      dbghelp: Fix the spec file to better match the SymGetSymFromAddr64() prototype.
      shell32: SHLoadNonloadedIconOverlayIdentifiers() is a WINAPI function.
      mscoree: _CorValidateImage() is a WINAPI function.
      sfc_os: Add a prototype for SfcIsKeyProtected().
      sfc_os: Update win32.api to fix the winapi_check warnings.

Frank Richter (2):
      dbghelp: Split gnu_debuglink handling into own function.
      dbghelp: Search for .gnu_debuglink file.

H. Verbeet (61):
      wined3d: Add a comment about D3D write masks and GLSL destination swizzles.
      wined3d: Split shader_glsl_add_param() in shader_glsl_add_src_param() and shader_glsl_add_dst_param().
      wined3d: Return the (binary) write mask from shader_glsl_add_dst_param().
      wined3d: Fixup the write mask for gl_FogFragCoord and gl_PointSize.
      05/49: wined3d: Only add line numbers for new lines in shader_addline().
      wined3d: Rename shader_glsl_add_dst() to shader_glsl_add_dst_old(), add shader_glsl_append_dst().
      wined3d: Pass a mask to shader_glsl_add_src_param().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_get_register_name().
      wined3d: Rewrite shader_glsl_sincos() to properly take the write mask into account.
      wined3d: Rewrite shader_glsl_arith() to properly take the write mask into account.
      wined3d: Rewrite shader_glsl_mad() to properly take the write mask into account.
      wined3d: Move WINED3DSIO_SGE & WINED3DSIO_SLT from shader_glsl_map2gl() to shader_glsl_compare() where they belong.
      wined3d: Give WINED3DSIO_CRS its own function, properly take the write mask into account.
      wined3d: Rewrite shader_glsl_map2gl() to properly take the write mask into account.
      wined3d: Rewrite shader_glsl_dot() to properly take the write mask into account.
      wined3d: Rewrite pshader_glsl_dp2add() to properly take the write mask into account.
      wined3d: Rewrite shader_glsl_mov() to properly take the write mask into account.
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_lit().
      wined3d: Rewrite shader_glsl_lrp() to properly take the write mask into account, use the GLSL mix instruction.
      wined3d: Rewrite shader_glsl_cmp() to properly take the write mask into account.
      wined3d: Rewrite shader_glsl_cnd() to properly take the write mask into account.
      wined3d: Rewrite shader_glsl_expp() to properly take the write mask into account.
      wined3d: Rewrite shader_glsl_rcp() to properly take the write mask into account.
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_dst().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texreg2ar.
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texreg2gb().
      wined3d: Split out getting the sample function and coordinate mask from shader_glsl_sample().
      wined3d: Rewrite pshader_glsl_texreg2rgb to properly take the write mask into account.
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texdp3tex().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texdp3().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x2depth().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x2pad().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3pad().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x2tex().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3tex().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3spec().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3vspec().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_loop().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_rep().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_if().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_ifc().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_breakc().
      wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_callnz().
      wined3d: Fix pshader_glsl_tex() and pshader_glsl_texcoord().
      wined3d: Simplify shader_glsl_get_swizzle().
      wined3d: Simplify shader_glsl_get_write_mask().
      wined3d: Add a glsl_dst_param_t type, pass it to shader_glsl_add_dst_param() instead of three separate character arrays.
      wined3d: Add a glsl_src_param_t type, pass it to shader_glsl_add_src_param() instead of three separate character arrays.
      wined3d: Don't set Parm when isDiffuseSupplied is FALSE in state_colormat(), it isn't used anyway.
      wined3d: When switching color material, apply the material we were previously tracking.
      wined3d: Fix a typo.
      wined3d: Give shader constants their own debug channel.
      wined3d: Use %s in trace.
      wined3d: Move SetupFullscreenWindow() and RestoreWindow() from IDirectDrawImpl to IWineD3DDeviceImpl.
      wined3d: Use SetupFullscreenWindow() to make the window fullscreen.
      wined3d: gl_FragDepth is a float, so fixup the write mask.
      wined3d: The sincos instruction is valid for ps/vs 2.1 as well.
      wined3d: Use ARB_VERTEX_PROGRAM instead of GL_VERTEX_PROGRAM_ARB with GL_SUPPORT.
      wined3d: Remove the d3d9types.h include from wined3d_private.h.
      wined3d: Remove some unused methods from the IWineD3DVertexShader interface.

Hans Leidekker (16):
      usp10: Initialise the caller supplied ABC structure in ScriptPlace.
      snmpapi: Implement SnmpUtilOidCpy, SnmpUtilOidFree and SnmpUtilVarBindFree.
      snmpapi: Add some missing APIs to the spec file.
      snmpapi: Implement SnmpUtilMem{Alloc,Free,ReAlloc}.
      snmpapi: Implement SnmpUtilVarBindCpy.
      snmpapi: Implement SnmpUtilVarBindList{Cpy,Free}.
      mlang: Implement IMultiLanguage::GetCodePageInfo.
      snmpapi: Implement SnmpUtilAsnAny{Cpy,Free}.
      snmpapi: Implement SnmpUtilOctets{Cmp,Cpy,Free,NCmp}.
      snmpapi: Implement SnmpUtilOid{Append, Cmp, NCmp}. Fix SnmpUtilOid{Cpy, Free}.
      snmpapi: Implement SnmpUtil{DbgPrint, IdsToA, OidToA, PrintAsnAny, PrintOid}.
      snmpapi: Add a bunch of tests.
      snmpapi: Add tests for SnmpUtilVarBind{, List}{Cpy, Free}. Make them pass.
      usp10: Remove duplicate font selection code from the tests.
      usp10: Move text metrics into the script cache. Start using accessor functions.
      usp10: Document ScriptPlace and ScriptShape.

Harry McNally (1):
      ntdll: Add Western Australia Summer Time.

Huw Davies (2):
      rpcrt4: Implement NdrSimpleType{Marshall,Unmarshall}.
      oleaut32: The typelib version numbers should be written to the registry in hex.

Hwang YunSong(황윤성) (1):
      wineconsole: Updated Korean resource .

Jacek Caban (14):
      urlmon: Code clean up.
      urlmon: Added mk protocol stub implementation.
      urlmon: Added mk protocol implementation.
      itss: Return S_FALSE in IStream::Read if there is no more data to read.
      itss: Close chm file when destroying Storage.
      itss: Added more protocol tests.
      mshtml: Fixed protocol tests on IE7.
      urlmon: Added IInternetSession::CreateBinding beginning implementation.
      urlmon: Added IInternetPriority interface to BindProtocol.
      urlmon: Added IInternetProtocolSink interface to BindProtocol.
      urlmon: Return CLSID from get_protocol_handler.
      urlmon: Added beginning BindProtocol implementation.
      urlmon: Added CreateBinding test.
      urlmon: Added BindProtocol's IInternetPriority implementation.

James Hawkins (7):
      comctl32: Rewrite the up-down control tests to add message checking.
      advpack: Fill the output buffer to workaround a bug in IE7s advpack.
      winedbg: Check buffer for NULL before writing to it.
      winspool.drv: Check for get_filename failure.
      mshtml: Use the correct variable in the FIXME.
      oleaut32: Initialize nrofnames to keep from freeing unused memory in the error case.
      advapi32: Add tests for RegQueryValue.

Jan Zerebecki (2):
      opengl32: Remove redundant const.
      urlmon: Fix type of an empty string to avoid warning.

Joel Parker (1):
      Remove redundant semicolons for ANSI compatibility.

Jonathan Ernst (1):
      kernel: Beginning of French translation of error messages.

Kai Blin (3):
      winetools: Fix installing on distributions without a root password.
      secur32: Fix off-by-one error when copying the password to the helper.
      secur32: Fix off-by-one error in converting the password to unicode.

Ken Thomases (2):
      wined3d: Do not block waiting for occlusion query result in GetData.
      winex11.drv: Copy the GL extensions string because it may be freed.

Kirill K. Smirnov (1):
      explorer/systray: Some code cleanup.

Lei Zhang (1):
      comctl32: Fix the updown control test to use the optional flag.

Louis Lenders (4):
      user32: Update Dutch resources.
      comdlg32: Update Dutch resources.
      clock: Update Dutch resource.
      user32: Define RealChildWindowFromPoint as a real stub.

Matt Finnicum (4):
      riched20: Implement EM_LIMITTEXT and some simple tests.
      riched20: Use CharFromPos instead of FindPixelPos in LinkNotify so it accounts for scrolling.
      riched20: Remove excessive traces from reader.c.
      riched20: Create undos in StreamIn at the right times. Adds tests for when StreamIn should be undoable.

Michael Stefaniuc (1):
      janitorial: Use the C standard for multiline strings.

Mike McCormack (11):
      kernel32: Create a simple abstraction for file mappings.
      kernel32: Split update_add_resource() into two functions.
      kernel32: Merge existing resources in EndUpdateResource.
      user32: Add an exception handler around the WM_GETTEXT handler.
      user32: Add a test showing WM_GETTEXT doesn't crash with bad pointers.
      msi: Register IMsiServer.
      ntdll: Implement RtlDecodePointer and RtlEncodePointer.
      kernel32: Forward EncodePointer and DecodePointer to their ntdll counterparts.
      msi: Add a test for the IMsiServer interface.
      msi: Implement IClassFactory->QueryInterface() for the msi server dll.
      msi: Implement IDispatch->CreateInstance() for the msi server dll.

Mikołaj Zalewski (9):
      wordpad: Add Polish translation.
      wininet: Add Polish translation.
      cmdlgtst: Add Polish translation.
      msi: Add Polish translation.
      mpr: Add Polish translation.
      comctl32: listview: A CDRF_SKIPDEFAULT for an item should skip the whole row.
      comctl32: listview: When shrinking the last column clear the now unused field.
      comctl32: toolbar: Recalc the toolbar after a TB_SETIMAGELIST.
      comctl32: toolbar: Fix the TB_SETBITMAPSIZE for width or height zero (with testcase).

Paul Vriens (18):
      ntdll/tests: Skip some tests on Windows Vista.
      ole32/tests: Cast-qual warnings fixes.
      oleaut32/tests: Cast-qual warnings fixes.
      user32/tests: Cast-qual warning fixes.
      secur32/tests: Cast-qual warning fixes.
      rpcrt4/tests: Cast-qual warning fixes.
      mshtml/tests: Cast-qual warning fix.
      crypt32/tests: Cast-qual warning fixes.
      mpr: Fix typo (Coverity).
      crypt32/tests: Fix compilation for older gcc versions (and MinGW).
      mshtml/tests: Fix compilation for older gcc versions (and MinGW).
      secur32/tests: Fix compilation for older gcc versions (and MinGW).
      ntdll: Extra check for ObjectAttributes (Coverity).
      comctl32/tests: Cast-qual warning fixes.
      msxml3/tests: Cast-qual warning fixes.
      ole32/tests: Cast-qual warning fixes.
      oleaut32/tests: Cast-qual warning fixes.
      qcap: Initialize a variable (Coverity).

Peter Oberndorfer (1):
      user32: Only try to remove the MDI document icon from the frame menu when needed.

Rob Shearman (34):
      ole32: Remove a FIXME comment that no longer applies.
      ole32: Fix a comment in rpc_sendreceive_thread that wasn't correct.
      ole32: Move the Running Object Table test in marshal.c to moniker.c to put it with the other ROT tests.
      ole32: Use the standard list functions for the global interface table implementation.
      ole32: Move test for CoGetInterfaceAndReleaseStream to compobj.c.
      ole32: Remove some unneeded inclusions of headers.
      ole32: Fix HGLOBALStreamImpl_CopyTo to check the return values of IStream_Read and IStream_Write and to not compare the bytes read to the bytes written.
      ole32: Return an error in CoMarshalInterface if pStream is NULL.
      ole32: Fix Read/WriteClassStm to return an error if the passed in stream pointer is NULL.
      ole32: Return an error from CoUnmarshalInterface if pStream is NULL or if ppv is NULL.
      ole32: Add tests for invalid arguments of CoMarshalInterface and CoMarshalInterThreadInterfaceInStream.
      ole32: ReadClassStm should return STG_E_READFAULT is not all of the data could be read, not S_FALSE.
      ole32: Add tests for passing invalid arguments to CoUnmarshalInterface.
      ole32: Add a test for the failure case of same-apartment unmarshaling when passing in an unsupported iid.
      ole32: Fix the detection of when we need an additional QueryInterface in CoUnmarshalInterface.
      wininet: Don't try to read anything if 0 bytes are to be read.
      ole32: Add tests for error info functions.
      ole32: Add tests for the default handler.
      ole32: Fix copied description and copyright statement for tests/errorinfo.c.
      wininet: Allow a NULL value to be passed into HTTP_ProcessHeader
      wininet: HTTP_HttpQueryInfoW deals with bytes, not characters so update the callers that have this wrong assumption.
      wininet: Change HTTP_EncodeBase64 to operate on a series of bytes,  instead of text.
      wininet: Fix HTTP_EncodeBasicAuth by passing an out buffer to the second set of character set conversion calls.
      rpcrt4: Track the security quality of service settings for bindings and connections.
      rpcrt4: Handle security quality of service flags relevant to the ncacn_np protocol.
      kernel32: Handle the SECURITY_* flags passed into CreateFileW by filling out the SECURITY_QUALITY_OF_SERVICE structure and passing it to NtCreateFile.
      rpcrt4: Make the fixme for an unhandled packet type more useful by printing the code of the unhandled packet type.
      rpcrt4: Try to avoid partial named pipe read/writes by looping.
      credui: Add stubbed out credui DLL.
      credui: Implement CredUIPromptForCredentialsW and CredUIConfirmCredentialsW.
      rpcrt4: Fix a typo in rpcrt4_conn_open_pipe.
      rpcrt4: When copying quality of service, deep copy TransportCredentials structure too.
      rpcrt4: Stash away NetworkOptions passed in from the binding string so that transports can look at the string if needed.
      rpcrt4: RPCRT4_strdupWtoA and RPCRT4_strdupAtoW don't change the input string, so make the input const.

Robert Reif (1):
      dsound: Fix tests for old versions of windows.

Stefan Dösinger (25):
      wined3d: Do not reset the material.
      wined3d: Remove the invymat from drawprim.c.
      wined3d: Move material applying to the state table.
      wined3d: Count the framerate per swapchain, not globally.
      wined3d: Store the scissor rect in the stateblock.
      ddraw: Get some texture stage states from their equivalent sampler states.
      wined3d: Avoid false resultarg warnings.
      wined3d: Do not warn about unsupported point sizes if the default values are set.
      wined3d: Attempt to remove some tabs smuggled in by xcode.
      wined3d: Add copyright statements to state.c.
      wined3d: Fix a capital letter in a parameter name.
      wined3d: D3D7 vertex buffers never change their declaration.
      wined3d: Do not activate / deactivate texture dimensions twice.
      wined3d: Remove dead NV_TEXTURE_SHADER code
      d3d9: Implement IDirect3DDevice9::StretchRect.
      wined3d: Do not perform a NULL check on riid (Coverity).
      wined3d: Avoid a NULL pointer dereference in UpdateTexture (Coverity).
      wined3d: Revert "wined3d: Do not preload vertex buffers in unlock.".
      wined3d: Do not free regularily locked surfaces.
      wined3d: Better tracking of vertex buffer assignments.
      wined3d: Do not force dynamic usage on transformed buffers.
      wined3d, d3d9: Caps correction.
      wined3d: Improve drawStridedSlow a bit.
      wined3d: Store the stream number in the strided structure.
      wined3d: Implement per stream offsets.

Stefan Leichter (1):
      winecoreaudio.drv: Print each 64-bit integer as two 32-bit integers.

Thomas Weidenmueller (3):
      shell32: Fix prototypes.
      comctl32: Fix InitCommonControlsEx prototype.
      shell32: Implement the property sheet extension array functions.

Vitaliy Margolen (22):
      dinput: Fix trace formatting.
      dinput: Remove duplicate Keyboard->Poll it is the same as base class.
      dinput: Pass complete DataFormat structure to find_property.
      dinput: [joystick_linux] Copy and modify default data format.
      dinput: [joystick_linux] Reuse the same properties array.
      dinput: [joystick_linux] Use correct offset to queue events.
      dinput: [joystick_linuxinput] Copy and modify default data format.
      dinput: [joystick_linuxinput] Rewrite GetObjectInfo and EnumObjects on top of base class.
      dinput: [joystick_linuxinput] Use correct offset to queue events.
      dinput: Use internal data format for object lookups.
      dinput: Don't copy no longer used user data format object array.
      dinput: Internal data format is not const anymore.
      ws2_32: Fix trace for WS_setsockopt to look closer to WS_getsockopt.
      server: Add generic access mapping for winstation and desktop objects.
      server: User correct user sid for the default_dacl.
      ntdll: Don't change granted access mask on error.
      ntdll: Correct trace message stating NtAccessCheck is a stub.
      advapi32: Add few more tests for token access check and fix it on Wine.
      server: Reverse return value and status in token_access_check to be consistent.
      server/ntdll: Simplistic implementation of NtQueryObject(ObjectBasicInformation).
      advapi32: Add more tests for granted access mask. Fix test on Wine.
      server: Prevent a crash on error while creating a token.

Vitaly Lipatov (1):
      comdlg32: Update Russian translation.

--
Alexandre Julliard
julliard@winehq.org
