1
From 3af0a55b9c9888d68054c851e14861acfdb51453 Mon Sep 17 00:00:00 2001
2
From: Philippe Rouquier <bonfire-app@wanadoo.fr>
3
Date: Sat, 26 Sep 2009 12:49:40 +0000
4
Subject: Don't leak file descriptors
6
This could be the reason why media did not get ejected
8
diff --git a/libbrasero-media/brasero-drive.c b/libbrasero-media/brasero-drive.c
9
index 08ab4e7..f3a7136 100644
10
--- a/libbrasero-media/brasero-drive.c
11
+++ b/libbrasero-media/brasero-drive.c
12
@@ -810,7 +810,7 @@ brasero_drive_probe_inside_thread (gpointer data)
14
BraseroScsiErrCode code;
15
BraseroDrivePrivate *priv;
16
- BraseroDeviceHandle *handle;
17
+ BraseroDeviceHandle *handle = NULL;
18
BraseroDrive *drive = BRASERO_DRIVE (data);
20
priv = BRASERO_DRIVE_PRIVATE (drive);
21
@@ -833,13 +833,15 @@ brasero_drive_probe_inside_thread (gpointer data)
22
handle = brasero_device_handle_open (device, FALSE, &code);
25
- if (priv->probe_cancelled) {
26
- BRASERO_MEDIA_LOG ("Open () cancelled");
28
+ BRASERO_MEDIA_LOG ("Open () failed: medium busy");
33
- BRASERO_MEDIA_LOG ("Open () failed: medium busy");
34
+ if (priv->probe_cancelled) {
35
+ BRASERO_MEDIA_LOG ("Open () cancelled");
37
+ brasero_device_handle_close (handle);
41
@@ -848,20 +850,24 @@ brasero_drive_probe_inside_thread (gpointer data)
42
BRASERO_MEDIA_LOG ("No medium inserted");
44
priv->has_medium = FALSE;
46
+ brasero_device_handle_close (handle);
50
if (code != BRASERO_SCSI_NOT_READY) {
51
- brasero_device_handle_close (handle);
52
BRASERO_MEDIA_LOG ("Device does not respond");
54
+ brasero_device_handle_close (handle);
60
if (priv->probe_cancelled) {
61
- brasero_device_handle_close (handle);
62
BRASERO_MEDIA_LOG ("Device probing cancelled");
64
+ brasero_device_handle_close (handle);
68
diff --git a/libbrasero-media/brasero-medium.c b/libbrasero-media/brasero-medium.c
69
index 46762d4..88a801d 100644
70
--- a/libbrasero-media/brasero-medium.c
71
+++ b/libbrasero-media/brasero-medium.c
72
@@ -2978,43 +2978,49 @@ brasero_medium_probe_thread (gpointer self)
73
handle = brasero_device_handle_open (device, FALSE, &code);
76
- if (priv->probe_cancelled)
78
+ BRASERO_MEDIA_LOG ("Open () failed: medium busy");
83
- BRASERO_MEDIA_LOG ("Open () succeeded");
85
- /* NOTE: if we wanted to know the status we'd need to read the
86
- * error code variable which is currently NULL */
87
- while (brasero_spc1_test_unit_ready (handle, &code) != BRASERO_SCSI_OK) {
88
- if (code == BRASERO_SCSI_NO_MEDIUM) {
89
- brasero_device_handle_close (handle);
90
- BRASERO_MEDIA_LOG ("No medium inserted");
91
- priv->info = BRASERO_MEDIUM_NONE;
94
- else if (code != BRASERO_SCSI_NOT_READY) {
95
- brasero_device_handle_close (handle);
96
- BRASERO_MEDIA_LOG ("Device does not respond");
99
+ if (priv->probe_cancelled) {
100
+ brasero_device_handle_close (handle);
105
+ BRASERO_MEDIA_LOG ("Open () succeeded");
107
- if (priv->probe_cancelled) {
108
- brasero_device_handle_close (handle);
109
- BRASERO_MEDIA_LOG ("Device probing cancelled");
112
+ /* NOTE: if we wanted to know the status we'd need to read the
113
+ * error code variable which is currently NULL */
114
+ while (brasero_spc1_test_unit_ready (handle, &code) != BRASERO_SCSI_OK) {
115
+ if (code == BRASERO_SCSI_NO_MEDIUM) {
116
+ BRASERO_MEDIA_LOG ("No medium inserted");
117
+ priv->info = BRASERO_MEDIUM_NONE;
119
+ brasero_device_handle_close (handle);
122
+ else if (code != BRASERO_SCSI_NOT_READY) {
123
+ BRASERO_MEDIA_LOG ("Device does not respond");
125
- BRASERO_MEDIA_LOG ("Device ready");
126
+ brasero_device_handle_close (handle);
130
- brasero_medium_init_real (BRASERO_MEDIUM (self), handle);
131
- brasero_device_handle_close (handle);
134
+ if (priv->probe_cancelled) {
135
+ BRASERO_MEDIA_LOG ("Device probing cancelled");
137
+ brasero_device_handle_close (handle);
142
- BRASERO_MEDIA_LOG ("Open () failed: medium busy");
144
+ BRASERO_MEDIA_LOG ("Device ready");
146
+ brasero_medium_init_real (BRASERO_MEDIUM (self), handle);
147
+ brasero_device_handle_close (handle);