cdda: Use MemoryDeleter where it makes sense.

This commit is contained in:
Axel Dörfler
2013-10-14 00:47:42 +02:00
parent a2d3d3ae54
commit ae527df336
2 changed files with 8 additions and 16 deletions
+1 -2
View File
@@ -1,8 +1,7 @@
SubDir HAIKU_TOP src add-ons kernel file_systems cdda ; SubDir HAIKU_TOP src add-ons kernel file_systems cdda ;
UsePrivateHeaders drivers kernel ; UsePrivateHeaders drivers kernel shared storage ;
UsePrivateHeaders [ FDirName kernel disk_device_manager ] ; UsePrivateHeaders [ FDirName kernel disk_device_manager ] ;
UsePrivateHeaders [ FDirName storage ] ;
KernelAddon cdda : KernelAddon cdda :
kernel_interface.cpp kernel_interface.cpp
@@ -19,6 +19,7 @@
#include <NodeMonitor.h> #include <NodeMonitor.h>
#include <TypeConstants.h> #include <TypeConstants.h>
#include <AutoDeleter.h>
#include <util/DoublyLinkedList.h> #include <util/DoublyLinkedList.h>
#include "cdda.h" #include "cdda.h"
@@ -458,11 +459,11 @@ open_attributes(uint32 cddbID, int deviceFD, int mode,
if (path == NULL) if (path == NULL)
return -1; return -1;
MemoryDeleter deleter(path);
bool create = (mode & O_WRONLY) != 0; bool create = (mode & O_WRONLY) != 0;
if (find_directory(B_USER_SETTINGS_DIRECTORY, -1, create, path, if (find_directory(B_USER_SETTINGS_DIRECTORY, -1, create, path,
B_PATH_NAME_LENGTH) != B_OK) { B_PATH_NAME_LENGTH) != B_OK) {
free(path);
return -1; return -1;
} }
@@ -479,7 +480,6 @@ open_attributes(uint32 cddbID, int deviceFD, int mode,
char* deviceName = path + length; char* deviceName = path + length;
if (ioctl(deviceFD, B_GET_PATH_FOR_DEVICE, deviceName, if (ioctl(deviceFD, B_GET_PATH_FOR_DEVICE, deviceName,
B_PATH_NAME_LENGTH - length) < B_OK) { B_PATH_NAME_LENGTH - length) < B_OK) {
free(path);
return B_ERROR; return B_ERROR;
} }
@@ -495,10 +495,7 @@ open_attributes(uint32 cddbID, int deviceFD, int mode,
} else } else
strlcat(path, "/shared", B_PATH_NAME_LENGTH); strlcat(path, "/shared", B_PATH_NAME_LENGTH);
int fd = open(path, mode | (create ? O_CREAT | O_TRUNC : 0), 0644); return open(path, mode | (create ? O_CREAT | O_TRUNC : 0), 0644);
free(path);
return fd;
} }
@@ -623,15 +620,15 @@ Volume::Mount(const char* device)
if (toc == NULL) if (toc == NULL)
return B_NO_MEMORY; return B_NO_MEMORY;
MemoryDeleter deleter(toc);
status_t status = read_table_of_contents(fDevice, toc, 1024); status_t status = read_table_of_contents(fDevice, toc, 1024);
// there has to be at least one audio track // there has to be at least one audio track
if (status == B_OK && count_audio_tracks(toc) == 0) if (status == B_OK && count_audio_tracks(toc) == 0)
status = B_BAD_TYPE; status = B_BAD_TYPE;
if (status != B_OK) { if (status != B_OK)
free(toc);
return status; return status;
}
fDiscID = compute_cddb_disc_id(*toc); fDiscID = compute_cddb_disc_id(*toc);
@@ -643,10 +640,8 @@ Volume::Mount(const char* device)
status = publish_vnode(FSVolume(), fRootNode->ID(), fRootNode, status = publish_vnode(FSVolume(), fRootNode->ID(), fRootNode,
&gCDDAVnodeOps, fRootNode->Type(), 0); &gCDDAVnodeOps, fRootNode->Type(), 0);
} }
if (status != B_OK) { if (status != B_OK)
free(toc);
return status; return status;
}
bool doLookup = true; bool doLookup = true;
cdtext text; cdtext text;
@@ -743,8 +738,6 @@ Volume::Mount(const char* device)
if (fd >= 0) if (fd >= 0)
_RestoreAttributes(fd); _RestoreAttributes(fd);
free(toc);
// determine volume title // determine volume title
DetermineName(fDiscID, fDevice, title, sizeof(title)); DetermineName(fDiscID, fDevice, title, sizeof(title));