dlls/advapi32/registry.c patch for RegEnumValuesA

Massimo max at veneto.com
Fri Jul 5 03:49:51 CDT 2002


Resubmitting as for Tony Lambregts request :)

Well, finally found and corrected a bug that made AutoCAD R14 hang...
I guess some other apps could have the same problem solved, but
had no time to test more :)

In RegEnumValueA, when the size for requested data buffer is too small,
function should return an error (as it does), but also return correct
buffer size (as it doesn't).
Found in AutoCAD; it asked for a reistry key value, got error, and then
looped forever trying to get val with wrong buffer size.

I guess, but had no time yet to check, that this problem could happen
somwhere else in Registry.c, I'll check it out next days.

With this patch, finally AutoCAD R14 is perfectly usable in wine, even without 
a native windows installed !

Change log: Change In RegEnumValueA, when the size for requested data 
buffer is too small, function should return an error (as it did), and 
also return correct buffer size (now it does).


Max max at com.veneto [reversed :) ]
-----



-------------- next part --------------
--- dlls/advapi32/registry.c	Sat Jul  6 01:29:08 2002
+++ /home/massimo/wine-patches/registry.c	Sat Jul  6 01:35:32 2002
@@ -1157,6 +1157,9 @@
             RtlUnicodeToMultiByteSize( &len, info->Name, info->NameLength );
             if (len >= *val_count)
             {
+		 /* MUST RETURN REQUESTED CORRECT BUFFER SIZE, NOT ONLY TELL IT'S WRONG */
+                *val_count = len + 1 ;
                 status = STATUS_BUFFER_OVERFLOW;
                 goto done;
             }
@@ -1174,6 +1177,9 @@
             {
                 if (len > *count)
                 {
+		     /* MUST RETURN REQUESTED CORRECT BUFFER SIZE, NOT ONLY TELL IT'S WRONG */
+                    *count = len+1 ;
                     status = STATUS_BUFFER_OVERFLOW;
                     goto done;
                 }


More information about the wine-devel mailing list