Mark Jansen [Sat, 18 Aug 2018 08:29:01 +0000 (10:29 +0200)]
[GDIPLUS] Add sxs registration for 1.0 version.
Needed by by some applications with MSVCR90.dll
CORE-14695
Timo Kreuzer [Sat, 18 Aug 2018 14:41:30 +0000 (16:41 +0200)]
[FREELDR] Don't insert a driver into the BootDriver list twice (#755)
This happened for the livecd, where the cdfs driver was inserted twice - once since it is the driver for the boot device, and the 2nd time, because it was specified in the registry - which was then initialized twice by the kernel, leading to a name conflict when trying to create another device object, which resulted in the newly created device object to be dereferenced again and the driver unloaded. This can be seen from the debug message "(ntoskrnl\mm\ARM3\sysldr.c:955) Leaking driver: cdfs.sys"
Eric Kohl [Sat, 18 Aug 2018 14:14:09 +0000 (16:14 +0200)]
[WLNOTIFY] Add SCard, Termsrv and Wlballon notifications and remove the test notifications
Katayama Hirofumi MZ [Sat, 18 Aug 2018 02:11:31 +0000 (11:11 +0900)]
[NETSHELL] Fix the too long texts
Timo Kreuzer [Sat, 18 Aug 2018 10:16:33 +0000 (12:16 +0200)]
[FREELDR] Fix calculation of page lookup table (#761)
On x64 we only map 1GB of pages, so adjust MM_MAX_PAGE accordingly and also respect that value when searching for the best location of the page lookup table.
CORE-11048 #resolve
Timo Kreuzer [Fri, 17 Aug 2018 12:50:22 +0000 (14:50 +0200)]
[USER32] Fix copying from WNDCLASS to WNDCLASSEX
This must be done field by field, since the alignment of the structures is different on _WIN64
Timo Kreuzer [Sat, 10 Feb 2018 22:57:27 +0000 (23:57 +0100)]
[NTOS:PS] Fix an issue with PROCESS_DEVICEMAP_INFORMATION size on 64 bit builds
The PROCESS_DEVICEMAP_INFORMATION union has 2 fields, one is a handle, the other one is a structure of 36 bytes (independent of architecture). The handle forces 64 bit alignment on 64 bit builds, making the structure 4 bytes bigger than on 32 bit builds. The site is checked in NtQueryInformationProcess (case ProcessDeviceMap). The expected size on x64 is the size of the Query structure without alignment. autocheck correctly passes the site of the Query union member, while smss passes the full size of PROCESS_DEVICEMAP_INFORMATION. Packing the structure is not an option, since it is defined in public headers without packing. Using the original headers sizeof(PROCESS_DEVICEMAP_INFORMATION) is 0x28, sizeof(PROCESS_DEVICEMAP_INFORMATION::Query) is 0x24.
Hermès Bélusca-Maïto [Fri, 17 Aug 2018 19:49:16 +0000 (21:49 +0200)]
[USER32] Implement support for the MB_SERVICE_NOTIFICATION flag in the MessageBox*() APIs.
Hermès Bélusca-Maïto [Fri, 17 Aug 2018 19:46:50 +0000 (21:46 +0200)]
[ROSTESTS] Add a test for the MB_SERVICE_NOTIFICATION flag of the MessageBox*() APIs.
Hermès Bélusca-Maïto [Fri, 17 Aug 2018 19:44:44 +0000 (21:44 +0200)]
[ROSTESTS] Rename the "softmodalmsgbox" test to "messagebox".
Timo Kreuzer [Tue, 13 Feb 2018 20:33:04 +0000 (21:33 +0100)]
[NTOS:OB] Rename object types to their official names to satisfy WinDbg
- Rename ObDirectoryType to ObpDirectoryObjectType and remove it from NDK (this is not exported!)
- Rename ObSymbolicLinkType to ObpSymbolicLinkObjectType
- Remove duplicated ObpTypeObjectType from ob.h
Pierre Schweitzer [Fri, 17 Aug 2018 17:12:30 +0000 (19:12 +0200)]
[NTOSKRNL] Properly initialize the IO_STATUS_BLOCK
Joachim Henze [Fri, 17 Aug 2018 16:07:35 +0000 (18:07 +0200)]
[SHELL32] Translation de-DE CORE-14916
fix control overlapping in IDD_FOLDER_OPTIONS_FILETYPES
(broke in 0.4.10-dev-24-
ed1c6bb0060d06f4c0167d9c2d732f4dc2b4cce4)
and translate IDD_NEWEXTENSION, IDD_EDITTYPE, IDD_ACTION, IDD_FOLDER_CUSTOMIZE
Hermès Bélusca-Maïto [Thu, 16 Aug 2018 20:08:08 +0000 (22:08 +0200)]
[USER32] Update file description.
Hermès Bélusca-Maïto [Thu, 16 Aug 2018 20:04:48 +0000 (22:04 +0200)]
[USER32] Implement SoftModalMessageBox() based on the original MessageBoxTimeoutIndirectW().
Additional changes:
- Adapt the message-box dialog procedure to correctly take into account
the presence or absence of a CANCEL button and take appropriate actions.
- Cache the strings retrieved by MB_GetString() (add FIXME notices too).
Hermès Bélusca-Maïto [Thu, 16 Aug 2018 20:01:52 +0000 (22:01 +0200)]
[ROSTESTS] Add an interactive test for the user32.dll API SoftModalMessageBox().
Hermès Bélusca-Maïto [Sun, 12 Aug 2018 16:16:29 +0000 (18:16 +0200)]
[USER32] Code refactoring for MessageBoxTimeoutIndirectW(), in preparation for SoftModalMessageBox() implementation.
- Remove usage of ButtonLen and ibtn-pointer arrays, to make the code
more generic and less dependent on the (maximal) number of buttons
in the message boxes.
- Move around the code that computes the positions and sizes of the
window controls.
Hermès Bélusca-Maïto [Fri, 10 Aug 2018 19:38:09 +0000 (21:38 +0200)]
[USER32] Get rid of the old MSGBOXINFO structure and use the new internal MSGBOXDATA structure instead.
Hermès Bélusca-Maïto [Fri, 10 Aug 2018 19:29:45 +0000 (21:29 +0200)]
[USER32] Code formatting only.
Hermès Bélusca-Maïto [Fri, 10 Aug 2018 16:20:53 +0000 (18:20 +0200)]
[USER32] Specify the font to be used for the message-box in its dialog template, using DS_SETFONT and a font point size of 0x7FFF, instead of passing a font handle and setting the font of each control manually.
Also improve the flags used in the DrawTextW() call for calculating
the size to be taken by the message-box text.
Hermès Bélusca-Maïto [Tue, 20 Feb 2018 22:07:11 +0000 (23:07 +0100)]
[SDK][UNDOCUSER] Add undocumented user32.dll SoftModalMessageBox() definition and its structure MSGBOXDATA.
Documented on http://www.vbforums.com/showthread.php?840593-Message-Box-with-Four-Buttons
and augmented from my own testings.
In addition, add also MessageBoxTimeoutA/W() and MB_GetString().
Hermès Bélusca-Maïto [Tue, 20 Feb 2018 21:05:31 +0000 (22:05 +0100)]
[PSDK] Add IDCANCEL and IDASYNC values (returned by MessageBoxTimeout() and WTSSendMessage() functions).
Hermès Bélusca-Maïto [Sun, 18 Feb 2018 19:37:16 +0000 (20:37 +0100)]
[USER32] Move related functions close to each other.
Hermès Bélusca-Maïto [Sun, 18 Feb 2018 19:31:29 +0000 (20:31 +0100)]
[USER32] Code formatting/indentation fixes only.
Oleksandr Shaposhnikov [Fri, 17 Aug 2018 14:43:54 +0000 (17:43 +0300)]
[CONFIGURE] Fix tabulation issue
Serge Gautherie [Thu, 19 Jul 2018 16:45:32 +0000 (18:45 +0200)]
[SHELL32_WINETEST] Fix 2 MSVC warnings about flags
- "...\ebrowser.c(1188) : warning C4133: 'function' : incompatible types - from 'DWORD *' to 'EXPLORER_BROWSER_OPTIONS *'"
- "...\ebrowser.c(1198) : warning C4133: 'function' : incompatible types - from 'DWORD *' to 'EXPLORER_BROWSER_OPTIONS *'"
Cherry-pick https://source.winehq.org/git/wine.git/commit/
535f2f9e663b7b3db3147960942d3b4934e1ce07
CORE-7538
Serge Gautherie [Wed, 18 Jul 2018 13:21:15 +0000 (15:21 +0200)]
[OLEAUT32] Fix an MSVC warning about VarCyMul()
"...\vartype.c(3808) : warning C4028: formal parameter 2 different from declaration"
Mininal cherry-pick Alexandre Julliard https://source.winehq.org/git/wine.git/commit/
18f7ec3670375f6389b36527fbfe1216fe795e53
CORE-7538
Katayama Hirofumi MZ [Fri, 17 Aug 2018 01:46:01 +0000 (10:46 +0900)]
[FONT][WIN32SS] Ignore identical mapping in IntLoadFontSubstList
Serge Gautherie [Fri, 11 May 2018 03:57:10 +0000 (05:57 +0200)]
[REACTOS] Warn if not using RosBE custom CMake
Better be explicit immediately, than fail later without a clue.
Thanks to Yuntian Zhang for initial code, adapted by me.
CORE-14607
Pierre Schweitzer [Thu, 16 Aug 2018 17:00:22 +0000 (19:00 +0200)]
[NTOSKRNL] Only allow page file on a few specific device types
Pierre Schweitzer [Thu, 16 Aug 2018 16:54:23 +0000 (18:54 +0200)]
[NTOSKRNL] Don't need all access for file object
Pierre Schweitzer [Thu, 16 Aug 2018 16:49:55 +0000 (18:49 +0200)]
[NTOSKRNL] Add a check commented out for now.
It's to be enabled once page file handling is moved to ARM3
Pierre Schweitzer [Thu, 16 Aug 2018 16:40:23 +0000 (18:40 +0200)]
[NTOSKRNL] MmTotalCommitLimit and MmTotalCommitLimitMaximum are in pages, not bytes
Oleksandr Shaposhnikov [Thu, 16 Aug 2018 15:11:53 +0000 (18:11 +0300)]
[CONFIGURE] Added support for new VS 19.15.x
Timo Kreuzer [Sun, 4 Feb 2018 12:30:47 +0000 (13:30 +0100)]
[NTOS:MM] Make SLIST handling for kernel stacks portable
Kernel stacks that re freed, can be placed on an SLIST for quick reuse. The old code was using a member of the PFN of the last stack page as the SLIST_ENTRY. This relies on the following (non-portable) assumptions:
- A stack always has a PTE associated with it.
- This PTE has a PFN associated with it.
- The PFN has an empty field that can be re-used as an SLIST_ENTRY.
- The PFN has another field that points back to the PTE, which then can be used to get the stack base.
Specifically: On x64 the PFN field is not 16 bytes aligned, so it cannot be used as an SLIST_ENTRY. (In a "usermode kernel" the other assumptions are also invalid).
The new code does what Windows does (and which seems absolutely obvious to do): Place the SLIST_ENTRY directly on the stack.
Timo Kreuzer [Sun, 4 Feb 2018 19:07:17 +0000 (20:07 +0100)]
[NTOS:SE] Fix SeSetSecurityDescriptorInfoEx to prevent pool corruption on x64
Getequ [Thu, 16 Aug 2018 14:10:41 +0000 (21:10 +0700)]
[ADVAPI32][SHELL32][DESK.CPL] Kill copy-paste of RegLoadMUIString. (#748)
RegLoadMUIStringW/A is part of advapi32.dll . shell32.dll and desk.cpl contained exact line-by-line copy of that function.
Serge Gautherie [Thu, 16 Aug 2018 13:10:24 +0000 (15:10 +0200)]
[NTOS:MM] Update a DPRINT string (#760)
CORE-12729
Katayama Hirofumi MZ [Thu, 16 Aug 2018 12:38:46 +0000 (21:38 +0900)]
[FONT][WIN32SS] Support MS symbol encoding (#759)
This commit adds support for the MS symbol encoding (FT_ENCODING_MS_SYMBOL) in our font engine.
It also fixes the display of the Anastasia font. And replacing our Marlett font with Windows' Marlett font is also fixed.
CORE-13269, CORE-14907
Thomas Faber [Thu, 16 Aug 2018 12:10:35 +0000 (14:10 +0200)]
[USBPORT] Fix 64 bit warnings.
Thomas Faber [Thu, 16 Aug 2018 12:10:15 +0000 (14:10 +0200)]
[USBPORT] Specify the correct length for the root hub's hub descriptor.
Thomas Faber [Wed, 15 Aug 2018 10:49:42 +0000 (12:49 +0200)]
[USBPORT] Remove an unnecessary check in USBPORT_AllocateBandwidthUSB2. CID
1434261
Thomas Faber [Wed, 15 Aug 2018 10:22:02 +0000 (12:22 +0200)]
[USBPORT] Remove an unnecessary check in USB2_ConvertFrame. CID
1434244
Thomas Faber [Wed, 15 Aug 2018 10:20:01 +0000 (12:20 +0200)]
[USBPORT] Accept negative BusTime in USB2_MoveTtEndpoint. CID
1434226
Thomas Faber [Sun, 12 Aug 2018 13:47:12 +0000 (15:47 +0200)]
[WIN32K:NTUSER] Fix type confusion in MsgMemorySize.
Pierre Schweitzer [Thu, 16 Aug 2018 12:04:27 +0000 (14:04 +0200)]
[NTOSKRNL] Start making our MMPAGING_FILE struct look like the real one
Pierre Schweitzer [Thu, 16 Aug 2018 11:50:16 +0000 (13:50 +0200)]
[NTOSKRNL] Store page file sizes in pages, not in bytes
Pierre Schweitzer [Thu, 16 Aug 2018 11:41:16 +0000 (13:41 +0200)]
[NTOSKRNL] Store page file minimum size and use it to prevent page file shrinking
Pierre Schweitzer [Thu, 16 Aug 2018 10:42:34 +0000 (12:42 +0200)]
[NTOSKRNL] Page files don't have an init size, but a minimum size
NFC
Pierre Schweitzer [Thu, 16 Aug 2018 10:39:24 +0000 (12:39 +0200)]
[NTOSKRNL] Drop the MmPagingFile spin lock in favor of a guarded mutex
Pierre Schweitzer [Thu, 16 Aug 2018 10:16:39 +0000 (12:16 +0200)]
[NTOSKRNL] Drop the alloc map from page file
It was making no sense, and implemented in a broken way
that couldn't have worked if code path was used.
Pierre Schweitzer [Thu, 16 Aug 2018 09:58:58 +0000 (11:58 +0200)]
[NTOSKRNL] Stub page file extension support
Katayama Hirofumi MZ [Wed, 15 Aug 2018 17:50:19 +0000 (02:50 +0900)]
[WIN32SS] Fix DrawText wrt DT_CALCRECT | DT_VCENTER (#745)
The test program: https://jira.reactos.org/secure/attachment/47925/TnB3.zip
CORE-14896
Stanislav Motylkov [Sat, 11 Aug 2018 09:56:08 +0000 (12:56 +0300)]
[SYSDM] Use single string control for system version
Katayama Hirofumi MZ [Wed, 15 Aug 2018 16:32:17 +0000 (01:32 +0900)]
[SYSSETUP] Fix the button sizes of theme selection dialog (#746)
CORE-14896
Mike Swanson [Tue, 14 Aug 2018 23:10:55 +0000 (16:10 -0700)]
Remove unnecessary executable bits
Denis Malikov [Wed, 15 Aug 2018 15:05:03 +0000 (22:05 +0700)]
[WIN32SS][USER] fixing couple typos for WINVER >= 0x600
CORE-12596
Pierre Schweitzer [Wed, 15 Aug 2018 14:38:56 +0000 (16:38 +0200)]
[BTRFS] Leak the root stream file object on mount.
For whatever (unknown) reason yet, this stream file object
seems to be deleted when still in use while installing
ReactOS on BtrFS partition, leading to use after free.
So, quick and dirty hack: leak it to prevent deletion.
CORE-13769
Pierre Schweitzer [Wed, 15 Aug 2018 14:35:05 +0000 (16:35 +0200)]
[BTRFS] Allow driver to start at first stage when no hive is present.
Contrary to upstream, we will ignore failure when opening registry
and will keep going.
CORE-13769
Mark Jansen [Wed, 1 Aug 2018 20:15:51 +0000 (22:15 +0200)]
[APPHELP_APITEST] Fix rc dependency.
As pointed out by Thomas.
Mark Jansen [Sun, 29 Jul 2018 17:45:13 +0000 (19:45 +0200)]
[RTL][KERNEL32] Add a comment indicating we need SEH in RtlImageNtHeaderEx
CORE-14532
CORE-14857
Mark Jansen [Sun, 29 Jul 2018 15:40:42 +0000 (17:40 +0200)]
[LDR] Guard some sections where we grab a lock.
CORE-14532
Mark Jansen [Sat, 14 Apr 2018 19:00:18 +0000 (21:00 +0200)]
[NTDLL_APITEST] Show behavior with exceptions in DllMain.
CORE-14532
Mark Jansen [Sun, 29 Jul 2018 15:13:42 +0000 (17:13 +0200)]
[LDR] Add debug logging when we encountered an exception in dll/tls callbacks.
CORE-14532
Mark Jansen [Sun, 8 Apr 2018 19:51:20 +0000 (21:51 +0200)]
[LDR] Protect calls from LdrpCallInitRoutine and LdrpCallTlsInitializers with SEH.
CORE-14532
Pierre Schweitzer [Mon, 13 Aug 2018 06:29:17 +0000 (08:29 +0200)]
[NTOSKRNL] Don't use anonymus allocations for MM objects
Pierre Schweitzer [Mon, 13 Aug 2018 06:24:39 +0000 (08:24 +0200)]
[NTOSKRNL] Keep page file name along the page file and free it on shutdown
Pierre Schweitzer [Mon, 13 Aug 2018 06:23:44 +0000 (08:23 +0200)]
[NTOSKRNL] Dereference page file objects in MM shutdown phase 1
Hack the call the MM shutdown phase 1
Pierre Schweitzer [Mon, 13 Aug 2018 05:52:05 +0000 (07:52 +0200)]
[NTOSKRNL] Close page files (and delete them!) on shutdown
Pierre Schweitzer [Mon, 13 Aug 2018 05:42:57 +0000 (07:42 +0200)]
[NTOSKRNL] Stub MM shutdown
Eric Kohl [Sun, 12 Aug 2018 20:19:05 +0000 (22:19 +0200)]
[UMPNPMGR] Partially implement ReenumerateDeviceInstance which is needed by the Lenovo T400 network driver installer
Stanislav Motylkov [Tue, 31 Jul 2018 15:57:58 +0000 (18:57 +0300)]
[SYSTEMINFO] Fix various bugs and add SMBIOS support
Katayama Hirofumi MZ [Sun, 12 Aug 2018 13:12:13 +0000 (22:12 +0900)]
[WIN32SS][FONT] Fix font metrics (#713)
Fix vertical alignment and Aspect penalty; improve font penalty system; fixes for Wine tests.
This is an update of #706. See CORE-11536 for more details.
The display of the following programs is fixed:
- Total Commander 8.52 setup: font displayed too large - CORE-11620.
- Effective File Search 6.8.1 german localization text rendering issues - CORE-14378.
- Font garbage in register splash screen in Foxit Reader 7.1.5 - CORE-9767.
- Calipers-1 is not displayed correctly - CORE-14302.
- Some MSI-installers draw their dialogs too large (example: Click-N-Type Virtual Keyboard 3.03.0412) - CORE-13161.
- Irfanview 4.50: font in zoom combobox displayed too large - CORE-14396.
- Rufus: The window and controls are displayed larger than necessary - CORE-14461.
Eric Kohl [Sun, 12 Aug 2018 12:13:26 +0000 (14:13 +0200)]
[NETAPI32] Add DFS RPC interface and some DFS stubs
Stanislav Motylkov [Sun, 12 Aug 2018 09:11:39 +0000 (12:11 +0300)]
[DXDIAG] Fix wrapped controls in russian translation
Stanislav Motylkov [Fri, 3 Aug 2018 21:22:49 +0000 (00:22 +0300)]
[DXDIAG] Minor code style fixes
Stanislav Motylkov [Tue, 31 Jul 2018 15:52:09 +0000 (18:52 +0300)]
[DXDIAG] Fix blank system and BIOS values
CORE-5961 #resolve
Stanislav Motylkov [Tue, 31 Jul 2018 15:48:32 +0000 (18:48 +0300)]
[SDK] Add user-mode DMI/SMBIOS helper library
CORE-5961
Katayama Hirofumi MZ [Sun, 12 Aug 2018 09:23:16 +0000 (18:23 +0900)]
[MSPAINT] Fix interpretation of command line (#707)
Pierre Schweitzer [Sun, 12 Aug 2018 08:05:25 +0000 (10:05 +0200)]
[KMTESTS:MM] Properly clean up files
This fixes driver unloading on Windows.
ROSTESTS-266
Pierre Schweitzer [Sat, 11 Aug 2018 21:34:08 +0000 (23:34 +0200)]
[NTOSKRNL] Misc fixes:
- Rename page file struct to MMPAGING_FILE
- Increment page files count after current page file was put in the list
Pierre Schweitzer [Sat, 11 Aug 2018 21:19:58 +0000 (23:19 +0200)]
[NTOSKRNL] Rename PagingFileList to MmPagingFile and make insertion simpler
Pierre Schweitzer [Sat, 11 Aug 2018 21:07:53 +0000 (23:07 +0200)]
[NTOSKRNL] Remove useless define
Pierre Schweitzer [Sat, 11 Aug 2018 20:47:58 +0000 (22:47 +0200)]
[NTOSKRNL] Replace the alloc map by a bitmap
Pierre Schweitzer [Sat, 11 Aug 2018 20:06:41 +0000 (22:06 +0200)]
[NTOSKRNL] Drop unused field
Pierre Schweitzer [Sat, 11 Aug 2018 16:37:31 +0000 (18:37 +0200)]
[NTOSKRNL] Revert r4668 (yeah, that was 15y ago)
It's hardly understandable and doesn't really makes sense.
Furthermore, it breaks compatibility with 3rd party FSD that
don't implement such FSCTL.
Obviously, Windows doesn't do this.
Pierre Schweitzer [Fri, 10 Aug 2018 06:40:02 +0000 (08:40 +0200)]
[NTOSKRNL] Restrict rights on the page file
Pierre Schweitzer [Fri, 10 Aug 2018 06:01:31 +0000 (08:01 +0200)]
[NTOSKRNL] Deny page file creation on floppy disk
Pierre Schweitzer [Fri, 10 Aug 2018 05:50:16 +0000 (07:50 +0200)]
[NTOSKRNL] Properly open a page file and set appropriate attributes
Pierre Schweitzer [Thu, 9 Aug 2018 19:13:08 +0000 (21:13 +0200)]
[NTOSKRNL] Check that caller has appropriate right before creating page file
Eric Kohl [Sat, 11 Aug 2018 20:25:30 +0000 (22:25 +0200)]
[DLLHOST] Add dllhost to make the device driver extractor for my Lenovo T400 happy
Katayama Hirofumi MZ [Fri, 10 Aug 2018 13:37:37 +0000 (22:37 +0900)]
[WIN32SS][FONT] Fix the system logical stock font data (#709)
This fixes the stock font data to improve font selection.
CORE-14885
Katayama Hirofumi MZ [Fri, 10 Aug 2018 11:25:50 +0000 (20:25 +0900)]
[SHELL32] Fix a careless mistake of ShellExecCmdLine (#737)
CORE-14886
Katayama Hirofumi MZ [Wed, 18 Jul 2018 20:02:49 +0000 (05:02 +0900)]
[CONSRV] Implement support for file/directory drag-and-drop (#692).
CORE-14833
Serge Gautherie [Wed, 4 Jul 2018 01:42:04 +0000 (03:42 +0200)]
[REACTOS] Improve how some ASSERTMSG() message values are printed: enforce ending "\n".
NB: Not touching calls in "third-party" code: class and classpnp.
Serge Gautherie [Mon, 2 Jul 2018 09:45:01 +0000 (11:45 +0200)]
[CMLIB] Simplify an ASSERTMSG() as an ASSERT().
Hermès Bélusca-Maïto [Wed, 8 Aug 2018 19:37:22 +0000 (21:37 +0200)]
[BOOTLIB] Fix the implementation of RtlAssert() ('Message' can be NULL, and fix the printing of ANSI string). Fix also the implementation of DbgPrint().
Serge Gautherie [Thu, 21 Jun 2018 03:05:50 +0000 (05:05 +0200)]
[REACTOS] RtlAssert(): use "%lu" as LineNumber format.
Hermès Bélusca-Maïto [Wed, 8 Aug 2018 18:45:39 +0000 (20:45 +0200)]
[CONSRV] Minor code re-organization.
Hermès Bélusca-Maïto [Wed, 8 Aug 2018 18:38:41 +0000 (20:38 +0200)]
[CONSRV] Add a PasteText() helper function and use it.