diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2002-05-08 14:21:08 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2002-05-08 14:21:08 +0000 |
commit | 6327de5fef1da1866695426cb7d73d47e157b971 (patch) | |
tree | f87fd62d20a18f98567dbea0510a2491716cc11d /winsup/cygwin/cygheap.cc | |
parent | 84d06cb64d051a07fb3a41fcbc5f3239cb6cc532 (diff) | |
download | cygnal-6327de5fef1da1866695426cb7d73d47e157b971.tar.gz cygnal-6327de5fef1da1866695426cb7d73d47e157b971.tar.bz2 cygnal-6327de5fef1da1866695426cb7d73d47e157b971.zip |
* cygheap.h (class cygheap_user): Add member `orig_psid'.
Add method `orig_sid()'.
* cygheap.cc (cygheap_user::set_sid): Maintain orig_psid.
Diffstat (limited to 'winsup/cygwin/cygheap.cc')
-rw-r--r-- | winsup/cygwin/cygheap.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/winsup/cygwin/cygheap.cc b/winsup/cygwin/cygheap.cc index 5d770746b..0992ad300 100644 --- a/winsup/cygwin/cygheap.cc +++ b/winsup/cygwin/cygheap.cc @@ -468,13 +468,23 @@ cygheap_user::set_sid (PSID new_sid) { if (psid) cfree (psid); + if (orig_psid) + cfree (orig_psid); psid = NULL; + orig_psid = NULL; return TRUE; } else { if (!psid) - psid = cmalloc (HEAP_STR, MAX_SID_LEN); + { + if (!orig_psid) + { + orig_psid = cmalloc (HEAP_STR, MAX_SID_LEN); + CopySid (MAX_SID_LEN, orig_psid, new_sid); + } + psid = cmalloc (HEAP_STR, MAX_SID_LEN); + } return CopySid (MAX_SID_LEN, psid, new_sid); } } |