- Fix SetCurrentDirectoryA to return success when setting the current directory again
See issue #6874 for more details.
svn path=/trunk/; revision=56490
Account for wait entries delaying a view attribute change and interacting
with the machinery in CoW copying code, specifically making CoW insert and
revoke a wait while copying the page, and make the CoW copy function take
both pages as arguments rather than relying on the address space.
Also alter the MM_WAIT_ENTRY value a bit to take into account an assert
that it must have bit 0x800 set.
svn path=/trunk/; revision=56488
- Add the linking exception text to the official ReactOS licensing text. Previously, the exception text was only available at the ReactOS website with no references from the source code.
svn path=/trunk/; revision=56479
A pointer is not a handle. A handle is not a pointer. At least in most cases. Defining STRICT in win32k revealed horrible things...
svn path=/trunk/; revision=56478
- Fix a palette leak in DIB_CreateDIBSection
- Remove PALETTE_AllocPalette and PALETTE_AllocPaletteIndexedRGB, use PALETTE_AllocPalWithHandle instead
svn path=/trunk/; revision=56476
* Implement Ctrl+C support on MessageBox. Patch by Guido Pola (prodito {at} live [dot] com).
See issue #5281 for more details.
svn path=/trunk/; revision=56475
Modify DIB_MapPaletteColors, first allocating a palette without initializing the colors, then setting up the colors. This wway we don't need to allocate an intermediate buffer.
svn path=/trunk/; revision=56474
- Implement GreCreatePaletteInternal and make NtGdiCreatePaletteInternal safe regarding user mode memory access.
- Allow allocating an indexed palette without initializing the colors
- Implement PALETTE_AllocPalWithHandle
- remove pointless Self member in PALETTE structure
- cleanup palette.h a bit
svn path=/trunk/; revision=56473
- Import isinf and isnan implementations from libwine_port and adjust port.h and config.h to support them
- Remove isinf/isnan hacks from jscript and wined3d build files
- Add missing port.h include to jscript/array.c (sent and applied upstream)
See issue #7027 for more details.
svn path=/trunk/; revision=56470
Rewrite SURFACE_AllocSurface(), which now does the part of the former SURFACE_bSetBitmapBits() as well. This is to allocate the bits for a bitmap directly with the SURFACE object in one allocation. Also don't use kernel mode sections anymore by default, but paged pool memory.
svn path=/trunk/; revision=56460
Don't calll GDIOBJ_vDereferenceObject from GDIOBJ_vUnlockObject, instead manually decrement the reference count. This allows us to ASSERT that the former function is never called with an exclusive lock held.
svn path=/trunk/; revision=56458
Never ever trust the wine file layout.
wine can load a dll when there is no file using builtins, while normal windows dont.
This fixes fusion beeing installed in the wrong places.
Loading the 2nd and 3rd copy of fusion fails atm.
svn path=/trunk/; revision=56453
Autogenerate oldnames for MSVC as well.
Currently on gcc builds we use a special def file syntax and use dlltool to create the lib, while on MSVC builds we use an asm file with aliases.
svn path=/trunk/; revision=56448
Fix a serious bug in PSEH that could lead to stack corruption and was causing CSRSS to crash, when large amounts of text were output on the console.
Background: PSEH used __builtin_alloca to allocate an SEH registration frame on the stack on demand, ie only for the first try level. But there are some nasty things with __builtin_alloca: First it DOES NOT - as one might think - free the allocated memory, once the allocation "goes out of scope", like with local variables, but only on function exit. Therefore it cannot normally be used inside a loop. The trick that PSEH used to "fix" this problem, was to save the stack pointer and reset it back at the end. This is quite problematic, since the rest of the code might assume that the stack pointer is still where it was left off after the allocation. The other thing is that __builtin_alloca() can allocate the memory whenever it likes to. It can allocate everything on function entry or not allocate anything at all, when other stack variables that went out of scope have left enough space to be reused. In csrss it now happened that the allocation was done before the stack pointer was saved, so the memory could not be freed by restoring the old stack pointer value. That lead to slowly eating up the stack since the code was inside a loop.
The allocation is now replaced with a variable sized array. The variable stays in scope until the _SEH2_END and will be automaticall cleaned up by the compiler. This also makes saving and restoring the stack pointer obsolete.
Reliability++
svn path=/trunk/; revision=56442