Author: cfinck Date: Tue Jun 30 16:08:16 2015 New Revision: 68324
URL: http://svn.reactos.org/svn/reactos?rev=68324&view=rev Log: [LOCALSPL] Bugfix: The RegEnum* functions take the buffer size _including_ the terminating null character as input and only return the actual data length _without_ the terminating null character as output.
Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printprocessors.c
Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printprocessors.c URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reac... ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printprocessors.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printprocessors.c [iso-8859-1] Tue Jun 30 16:08:16 2015 @@ -192,7 +192,7 @@ }
// Get the name of this Print Processor. - cchPrintProcessorName = cchMaxSubKey; + cchPrintProcessorName = cchMaxSubKey + 1; lStatus = RegEnumKeyExW(hSubKey, i, pwszPrintProcessorName, &cchPrintProcessorName, NULL, NULL, NULL, NULL); if (lStatus != ERROR_SUCCESS) { @@ -498,7 +498,7 @@ { // RegEnumKeyExW sucks! Unlike similar API functions, it only returns the actual numbers of characters copied when you supply a buffer large enough. // So use pwszTemp with its size cchMaxSubKey for this. - cchPrintProcessor = cchMaxSubKey; + cchPrintProcessor = cchMaxSubKey + 1; dwErrorCode = (DWORD)RegEnumKeyExW(hSubKey, i, pwszTemp, &cchPrintProcessor, NULL, NULL, NULL, NULL); if (dwErrorCode != ERROR_SUCCESS) { @@ -524,7 +524,7 @@ for (i = 0; i < *pcReturned; i++) { // This isn't really correct, but doesn't cause any harm, because we've extensively checked the size of the supplied buffer above. - cchPrintProcessor = cchMaxSubKey; + cchPrintProcessor = cchMaxSubKey + 1;
// Copy the Print Processor name. dwErrorCode = (DWORD)RegEnumKeyExW(hSubKey, i, (PWSTR)pCurrentOutputPrintProcessor, &cchPrintProcessor, NULL, NULL, NULL, NULL);