Symptom CORE-14072: '1C: Enterprise 8.2 Educational Edititon can't launch anymore due to "not enough memory" error'
It regressed by SVN r74513 == git 5b6e082869
Actually the most important part of this fix are just the changes in win32ss/printing/base/winspool/printers.c func GetPrinterW()
But I felt more safe when porting back the whole 2 fix-commits including the tests:
---------------------------
[PRINTING] Fix GetPrinterW, add tests for it and GetDefaultPrinterA/W, and add a proper stub for GetPrinterDriverDirectoryA.
* Pass the correct handle to _RpcGetPrinter in GetPrinterW.
* Pass an empty string instead of a NULL pointer as wszComputerName to the GetPrinterLevel* functions, because this variable is later used as source for StringCbCopyExW.
* Don't check for GetLastError() == ERROR_SUCCESS in tests. Windows apparently only sets the last error in case of failure.
The Printing code should probably be changed similarly in a future commit.
Should fix CORE-14072
fix picked from commit 0.4.8-dev-314-g
3a69fd4e96
----------------------------
[WINSPOOL] Convert the returned Unicode string back to ANSI in GetDefaultPrinterA.
Thanks to Mark for the hint in CORE-14072!
fix picked from commit 0.4.8-dev-300-g
45b9b5c1ef
In C89, you can only initialize the first member of a union within a declaration. Unfortunately, that is the S_un_b UCHAR array for the S_un union inside struct in_addr.
So we have to initialize it with each UCHAR member of Address.