diff options
author | cmiller@calliope.local <> | 2006-03-17 18:46:34 +0100 |
---|---|---|
committer | cmiller@calliope.local <> | 2006-03-17 18:46:34 +0100 |
commit | 34638c283a9e85e4b3cc54a8bf1c0305432fb5db (patch) | |
tree | acb02ad16ddf827b3143538dcd7a18631a9de6c7 /vio | |
parent | a152cac2e7d783f759698133e39bdf2c0707e93e (diff) | |
download | mariadb-git-34638c283a9e85e4b3cc54a8bf1c0305432fb5db.tar.gz |
No longer leak file descriptors in mysql_close. Fixes Bug#15846.
Diffstat (limited to 'vio')
-rw-r--r-- | vio/viosocket.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/vio/viosocket.c b/vio/viosocket.c index 5e0ed20b039..710f7a93607 100644 --- a/vio/viosocket.c +++ b/vio/viosocket.c @@ -560,14 +560,20 @@ int vio_close_shared_memory(Vio * vio) Close all handlers. UnmapViewOfFile and CloseHandle return non-zero result if they are success. */ - r= UnmapViewOfFile(vio->handle_map) || CloseHandle(vio->event_server_wrote) || - CloseHandle(vio->event_server_read) || CloseHandle(vio->event_client_wrote) || - CloseHandle(vio->event_client_read) || CloseHandle(vio->handle_file_map); - if (!r) - { - DBUG_PRINT("vio_error", ("close() failed, error: %d",r)); - /* FIXME: error handling (not critical for MySQL) */ - } + if (UnmapViewOfFile(vio->handle_map) == 0) + DBUG_PRINT("vio_error", ("UnmapViewOfFile() failed")); + if (CloseHandle(vio->event_server_wrote) == 0) + DBUG_PRINT("vio_error", ("CloseHandle(vio->esw) failed")); + if (CloseHandle(vio->event_server_read) == 0) + DBUG_PRINT("vio_error", ("CloseHandle(vio->esr) failed")); + if (CloseHandle(vio->event_client_wrote) == 0) + DBUG_PRINT("vio_error", ("CloseHandle(vio->ecw) failed")); + if (CloseHandle(vio->event_client_read) == 0) + DBUG_PRINT("vio_error", ("CloseHandle(vio->ecr) failed")); + if (CloseHandle(vio->handle_file_map) == 0) + DBUG_PRINT("vio_error", ("CloseHandle(vio->hfm) failed")); + if (CloseHandle(vio->event_conn_closed) == 0) + DBUG_PRINT("vio_error", ("CloseHandle(vio->ecc) failed")); } vio->type= VIO_CLOSED; vio->sd= -1; |