Added patch to store registry timestamps with nanoseconds precision.

This commit is contained in:
Sebastian Lackner 2015-07-28 17:57:36 +02:00
parent 1ce0efdd60
commit a9538a1965
5 changed files with 74 additions and 1 deletions

View File

@ -39,7 +39,7 @@ Wine. All those differences are also documented on the
Included bug fixes and improvements
-----------------------------------
**Bug fixes and features included in the next upcoming release [11]:**
**Bug fixes and features included in the next upcoming release [12]:**
* Add stubs for d3dx10_43.D3DX10CreateEffectFromFileA/W ([Wine Bug #27739](https://bugs.winehq.org/show_bug.cgi?id=27739))
* Add support for ThreadQuerySetWin32StartAddress info class ([Wine Bug #8277](https://bugs.winehq.org/show_bug.cgi?id=8277))
@ -52,6 +52,7 @@ Included bug fixes and improvements
* Return dummy ID3DXSkinInfo interface when skinning info not present ([Wine Bug #33904](https://bugs.winehq.org/show_bug.cgi?id=33904))
* Share source of d3dx9_36 with d3dx9_33 to avoid Wine DLL forwards ([Wine Bug #21817](https://bugs.winehq.org/show_bug.cgi?id=21817))
* Silence repeated LocaleNameToLCID/LCIDToLocaleName unsupported flags FIXMEs ([Wine Bug #30076](https://bugs.winehq.org/show_bug.cgi?id=30076))
* Store registry timestamps with nanoseconds precision ([Wine Bug #38927](https://bugs.winehq.org/show_bug.cgi?id=38927))
**Bug fixes and features in Wine Staging 1.7.47 [230]:**

1
debian/changelog vendored
View File

@ -17,6 +17,7 @@ wine-staging (1.7.48) UNRELEASED; urgency=low
* Added patch to export additional OpenAL32 functions.
* Added patch to return dummy ID3DXSkinInfo interface when skinning info not
present.
* Added patch to store registry timestamps with nanoseconds precision.
* Removed patch to allow to enable/disable InsertMode in wineconsole settings
(accepted upstream).
* Removed patch to improve IoGetDeviceObjectPointer stub to appease SecuROM

View File

@ -263,6 +263,7 @@ patch_enable_all ()
enable_winedevice_Fix_Relocation="$1"
enable_winemenubuilder_Desktop_Icon_Path="$1"
enable_winepulse_PulseAudio_Support="$1"
enable_wineserver_Registry_Timestamp="$1"
enable_winex11_CandidateWindowPos="$1"
enable_winex11_Clipboard_HTML="$1"
enable_winex11_DragAndDrop="$1"
@ -864,6 +865,9 @@ patch_enable ()
winepulse-PulseAudio_Support)
enable_winepulse_PulseAudio_Support="$2"
;;
wineserver-Registry_Timestamp)
enable_wineserver_Registry_Timestamp="$2"
;;
winex11-CandidateWindowPos)
enable_winex11_CandidateWindowPos="$2"
;;
@ -5466,6 +5470,21 @@ if test "$enable_winepulse_PulseAudio_Support" -eq 1; then
) >> "$patchlist"
fi
# Patchset wineserver-Registry_Timestamp
# |
# | This patchset fixes the following Wine bugs:
# | * [#38927] Store registry timestamps with nanoseconds precision
# |
# | Modified files:
# | * server/registry.c
# |
if test "$enable_wineserver_Registry_Timestamp" -eq 1; then
patch_apply wineserver-Registry_Timestamp/0001-wineserver-Increase-precision-when-saving-loading-re.patch
(
echo '+ { "Michael Müller", "wineserver: Increase precision when saving / loading registry modification date.", 1 },';
) >> "$patchlist"
fi
# Patchset winex11-CandidateWindowPos
# |
# | This patchset fixes the following Wine bugs:

View File

@ -0,0 +1,51 @@
From b802fbbf522c400c30d26170152daa5e1f41f94d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 28 Jul 2015 17:46:13 +0200
Subject: wineserver: Increase precision when saving / loading registry
modification date
---
server/registry.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/server/registry.c b/server/registry.c
index 43527df..45eebb8 100644
--- a/server/registry.c
+++ b/server/registry.c
@@ -264,7 +264,8 @@ static void save_subkeys( const struct key *key, const struct key *base, FILE *f
{
fprintf( f, "\n[" );
if (key != base) dump_path( key, base, f );
- fprintf( f, "] %u\n", (unsigned int)((key->modif - ticks_1601_to_1970) / TICKS_PER_SEC) );
+ fprintf( f, "] %u %u\n", (unsigned int)((key->modif - ticks_1601_to_1970) / TICKS_PER_SEC),
+ (unsigned int)((key->modif - ticks_1601_to_1970) % TICKS_PER_SEC) );
if (key->class)
{
fprintf( f, "#class=\"" );
@@ -1347,9 +1348,10 @@ static struct key *load_key( struct key *base, const char *buffer,
WCHAR *p;
struct unicode_str name;
int res;
- unsigned int mod;
+ unsigned int mod, mod_nano;
timeout_t modif = current_time;
data_size_t len;
+ int elements;
if (!get_file_tmp_space( info, strlen(buffer) * sizeof(WCHAR) )) return NULL;
@@ -1359,8 +1361,9 @@ static struct key *load_key( struct key *base, const char *buffer,
file_read_error( "Malformed key", info );
return NULL;
}
- if (sscanf( buffer + res, " %u", &mod ) == 1)
- modif = (timeout_t)mod * TICKS_PER_SEC + ticks_1601_to_1970;
+ elements = sscanf( buffer + res, " %u %u", &mod, &mod_nano );
+ if (elements >= 1) modif = (timeout_t)mod * TICKS_PER_SEC + ticks_1601_to_1970;
+ if (elements >= 2) modif += mod_nano;
p = info->tmp;
while (prefix_len && *p) { if (*p++ == '\\') prefix_len--; }
--
2.4.5

View File

@ -0,0 +1 @@
Fixes: [38927] Store registry timestamps with nanoseconds precision