From 144129434f20eb579fed296518503762fa2ac277 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 7 Jul 2011 11:30:06 +0200 Subject: [PATCH] GenericIndexIterator: Fix NameIndex dependency Next() was still copying the name. Add a GetNodeValue() method to the policy that fetches the value instead. --- src/add-ons/kernel/file_systems/packagefs/IndexImpl.h | 6 ++---- src/add-ons/kernel/file_systems/packagefs/NameIndex.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/file_systems/packagefs/IndexImpl.h b/src/add-ons/kernel/file_systems/packagefs/IndexImpl.h index c337aee24d..cb01f8a7c0 100644 --- a/src/add-ons/kernel/file_systems/packagefs/IndexImpl.h +++ b/src/add-ons/kernel/file_systems/packagefs/IndexImpl.h @@ -93,10 +93,8 @@ GenericIndexIterator::Next(void* buffer, size_t* _keyLength) Node* node = _ToNode(); if (node != NULL) { - if (buffer != NULL) { - strlcpy((char*)buffer, node->Name(), kMaxIndexKeyLength); - *_keyLength = strlen(node->Name()); - } + if (buffer != NULL) + Policy::GetNodeValue(node, buffer, _keyLength); fNextTreeNode = Policy::GetNodeTree(fIndex)->Next(fNextTreeNode); } diff --git a/src/add-ons/kernel/file_systems/packagefs/NameIndex.cpp b/src/add-ons/kernel/file_systems/packagefs/NameIndex.cpp index 9504b69061..25bb84cd97 100644 --- a/src/add-ons/kernel/file_systems/packagefs/NameIndex.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/NameIndex.cpp @@ -94,6 +94,12 @@ struct NameIndex::IteratorPolicy { { return index->fEntries; } + + static void GetNodeValue(Node* node, void* buffer, size_t* _keyLength) + { + strlcpy((char*)buffer, node->Name(), kMaxIndexKeyLength); + *_keyLength = strlen(node->Name()); + } };