On Tue, 13 Feb 2001, you wrote:
davep davep@cyw.uklinux.net writes:
RegQueryValue() & RegEnumValue()
We need to return the data length for REG_BINARY value types as well as strings when called with a null buffer pointer.
I don't understand why you need that. We already return the data length in all cases, including REG_BINARY. Could you elaborate a bit on exactly what is going wrong?
The patch fixes a crash when starting Lotus 1-2-3 release 97 (part of the SmartSuite 97 package). I've attached the offending registry keys.
123 calls RegQueryValueEx for the binary values with lpData set to NULL and lpcbData non-NULL. RegQueryValueEx is supposed to return the size of the buffer needed to hold the data, but Wine is returning the size of its initial buffer (0xeb IIRC, sizeof(buffer)-sizeof(KEY_VALUE_PARTIAL_INFORMATION)). This causes a crash when 123 immediately calls the same function again with a real buffer address, presumably because 123 didn't allocate enough storage space.