mirror of
https://review.haiku-os.org/haiku
synced 2024-11-23 07:18:40 +01:00
KPath: Use a default buffer size of B_PATH_NAME_LENGTH without + 1.
B_PATH_NAME_LENGTH == PATH_MAX, and PATH_MAX is inclusive of the final
NULL terminator, so we don't need a + 1 here.
The original KPath default was to not use + 1, but that was changed in
42e3c6f978
due to all the consumers that did.
But all those consumers are wrong, it appears; they should just be
using the default length instead. So now we do that.
This commit is contained in:
parent
cc9ea55c59
commit
9708b08060
@ -22,15 +22,16 @@ public:
|
|||||||
TRAVERSE_LEAF_LINK = 0x02,
|
TRAVERSE_LEAF_LINK = 0x02,
|
||||||
LAZY_ALLOC = 0x04
|
LAZY_ALLOC = 0x04
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
KPath(size_t bufferSize = B_PATH_NAME_LENGTH + 1);
|
KPath(size_t bufferSize = B_PATH_NAME_LENGTH);
|
||||||
KPath(const char* path, int32 flags = DEFAULT,
|
KPath(const char* path, int32 flags = DEFAULT,
|
||||||
size_t bufferSize = B_PATH_NAME_LENGTH + 1);
|
size_t bufferSize = B_PATH_NAME_LENGTH);
|
||||||
KPath(const KPath& other);
|
KPath(const KPath& other);
|
||||||
~KPath();
|
~KPath();
|
||||||
|
|
||||||
status_t SetTo(const char* path, int32 flags = DEFAULT,
|
status_t SetTo(const char* path, int32 flags = DEFAULT,
|
||||||
size_t bufferSize = B_PATH_NAME_LENGTH + 1);
|
size_t bufferSize = B_PATH_NAME_LENGTH);
|
||||||
void Adopt(KPath& other);
|
void Adopt(KPath& other);
|
||||||
|
|
||||||
status_t InitCheck() const;
|
status_t InitCheck() const;
|
||||||
|
@ -80,7 +80,7 @@ status_t
|
|||||||
KPath::SetTo(const char* path, int32 flags, size_t bufferSize)
|
KPath::SetTo(const char* path, int32 flags, size_t bufferSize)
|
||||||
{
|
{
|
||||||
if (bufferSize == 0)
|
if (bufferSize == 0)
|
||||||
bufferSize = B_PATH_NAME_LENGTH + 1;
|
bufferSize = B_PATH_NAME_LENGTH;
|
||||||
|
|
||||||
// free the previous buffer, if the buffer size differs
|
// free the previous buffer, if the buffer size differs
|
||||||
if (fBuffer != NULL && fBufferSize != bufferSize) {
|
if (fBuffer != NULL && fBufferSize != bufferSize) {
|
||||||
@ -249,11 +249,13 @@ KPath::DetachBuffer()
|
|||||||
{
|
{
|
||||||
char* buffer = fBuffer;
|
char* buffer = fBuffer;
|
||||||
|
|
||||||
if (fBufferSize == (B_PATH_NAME_LENGTH + 1)) {
|
#ifdef _KERNEL_MODE
|
||||||
|
if (fBufferSize == B_PATH_NAME_LENGTH) {
|
||||||
buffer = (char*)malloc(fBufferSize);
|
buffer = (char*)malloc(fBufferSize);
|
||||||
memcpy(buffer, fBuffer, fBufferSize);
|
memcpy(buffer, fBuffer, fBufferSize);
|
||||||
_FreeBuffer();
|
_FreeBuffer();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (fBuffer != NULL) {
|
if (fBuffer != NULL) {
|
||||||
fBuffer = NULL;
|
fBuffer = NULL;
|
||||||
@ -427,7 +429,7 @@ KPath::_AllocateBuffer()
|
|||||||
{
|
{
|
||||||
if (fBuffer == NULL && fBufferSize != 0) {
|
if (fBuffer == NULL && fBufferSize != 0) {
|
||||||
#ifdef _KERNEL_MODE
|
#ifdef _KERNEL_MODE
|
||||||
if (fBufferSize == (B_PATH_NAME_LENGTH + 1))
|
if (fBufferSize == B_PATH_NAME_LENGTH)
|
||||||
fBuffer = (char*)object_cache_alloc(sPathNameCache, 0);
|
fBuffer = (char*)object_cache_alloc(sPathNameCache, 0);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@ -448,7 +450,7 @@ void
|
|||||||
KPath::_FreeBuffer()
|
KPath::_FreeBuffer()
|
||||||
{
|
{
|
||||||
#ifdef _KERNEL_MODE
|
#ifdef _KERNEL_MODE
|
||||||
if (fBufferSize == (B_PATH_NAME_LENGTH + 1))
|
if (fBufferSize == B_PATH_NAME_LENGTH)
|
||||||
object_cache_free(sPathNameCache, fBuffer, 0);
|
object_cache_free(sPathNameCache, fBuffer, 0);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
@ -5284,7 +5284,7 @@ vfs_init(kernel_args* args)
|
|||||||
panic("vfs_init: error creating mounts hash table\n");
|
panic("vfs_init: error creating mounts hash table\n");
|
||||||
|
|
||||||
sPathNameCache = create_object_cache("vfs path names",
|
sPathNameCache = create_object_cache("vfs path names",
|
||||||
B_PATH_NAME_LENGTH + 1, 8, NULL, NULL, NULL);
|
B_PATH_NAME_LENGTH, 8, NULL, NULL, NULL);
|
||||||
if (sPathNameCache == NULL)
|
if (sPathNameCache == NULL)
|
||||||
panic("vfs_init: error creating path name object_cache\n");
|
panic("vfs_init: error creating path name object_cache\n");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user