aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2011-07-30 08:09:44 +0000
committerCorinna Vinschen <corinna@vinschen.de>2011-07-30 08:09:44 +0000
commit9e242ba4614aa94251e1ad9bf4dea1a1b3363443 (patch)
tree3920ce81da6a13a22ee128567ca74f0f294288c6 /winsup/cygwin
parent69138a8bc5388617fc9b1b57945494fe153c3363 (diff)
downloadnewlib-9e242ba4614aa94251e1ad9bf4dea1a1b3363443.zip
newlib-9e242ba4614aa94251e1ad9bf4dea1a1b3363443.tar.gz
newlib-9e242ba4614aa94251e1ad9bf4dea1a1b3363443.tar.bz2
* fhandler_registry.cc (fhandler_registry::dup): Duplicate value_name.
Diffstat (limited to 'winsup/cygwin')
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/fhandler_registry.cc9
2 files changed, 11 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index fb86794..306ccab 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2011-07-30 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_registry.cc (fhandler_registry::dup): Duplicate value_name.
+
2011-07-29 Corinna Vinschen <corinna@vinschen.de>
Throughout change "WinSock" to "Winsock" in comments.
diff --git a/winsup/cygwin/fhandler_registry.cc b/winsup/cygwin/fhandler_registry.cc
index ebd3cf5..500fb3a 100644
--- a/winsup/cygwin/fhandler_registry.cc
+++ b/winsup/cygwin/fhandler_registry.cc
@@ -1028,12 +1028,17 @@ open_key (const char *name, REGSAM access, DWORD wow64, bool isValue)
int
fhandler_registry::dup (fhandler_base *child)
{
- int ret = fhandler_virtual::dup (child);
+ debug_printf ("here");
+ fhandler_registry *fhs = (fhandler_registry *) child;
+
+ int ret = fhandler_virtual::dup (fhs);
/* Pseudo registry handles can't be duplicated using DuplicateHandle.
Therefore those fhandlers are marked with the nohandle flag. This
allows fhandler_base::dup to succeed as usual for nohandle fhandlers.
Here we just have to fix up by copying the pseudo handle value. */
if ((HKEY) get_handle () >= HKEY_CLASSES_ROOT)
- child->set_io_handle (get_handle ());
+ fhs->set_io_handle (get_handle ());
+ if (value_name)
+ fhs->value_name = cwcsdup (value_name);
return ret;
}