diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2014-06-23 14:56:45 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2014-06-23 14:56:45 +0000 |
commit | f739fd3ef0716dd603f2c917f5e502d6a7f71f89 (patch) | |
tree | 419416f4e34ad1ad80f0584d66b6fe81796a942b /winsup/cygwin/select.cc | |
parent | 565e3643dd3f12fc275d2fb0f7642b17afd00691 (diff) | |
download | cygnal-f739fd3ef0716dd603f2c917f5e502d6a7f71f89.tar.gz cygnal-f739fd3ef0716dd603f2c917f5e502d6a7f71f89.tar.bz2 cygnal-f739fd3ef0716dd603f2c917f5e502d6a7f71f89.zip |
* select.cc (start_thread_socket): Delete si on early return in case of
an error (CID 59967).
Diffstat (limited to 'winsup/cygwin/select.cc')
-rw-r--r-- | winsup/cygwin/select.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index e923f9161..e83d9a024 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -1414,7 +1414,10 @@ start_thread_socket (select_record *me, select_stuff *stuff) si = new select_socket_info; if (!init_tls_select_info ()) - return 0; + { + delete si; + return 0; + } si->ser_num = _my_tls.locals.select.ser_num; si->w4 = _my_tls.locals.select.w4; @@ -1440,14 +1443,20 @@ start_thread_socket (select_record *me, select_stuff *stuff) + MAXIMUM_WAIT_OBJECTS) * sizeof (LONG)); if (!nser) - return 0; + { + delete si; + return 0; + } _my_tls.locals.select.ser_num = si->ser_num = nser; HANDLE *nw4 = (HANDLE *) realloc (si->w4, (_my_tls.locals.select.max_w4 + MAXIMUM_WAIT_OBJECTS) * sizeof (HANDLE)); if (!nw4) - return 0; + { + delete si; + return 0; + } _my_tls.locals.select.w4 = si->w4 = nw4; _my_tls.locals.select.max_w4 += MAXIMUM_WAIT_OBJECTS; } |