diff --git a/libpkg/data/database.cpp b/libpkg/data/database.cpp index bf2f143..c04727b 100644 --- a/libpkg/data/database.cpp +++ b/libpkg/data/database.cpp @@ -493,6 +493,9 @@ StorageID Database::findBasePackageWithID(const std::string &packageName, Packag void Database::removePackage(const std::string &packageName) { + if (packageName.empty()) { + return; + } const auto lock = std::unique_lock(m_storage->updateMutex); auto txn = m_storage->packages.getRWTransaction(); const auto [packageID, package] = m_storage->packageCache.retrieve(*m_storage, &txn, packageName); diff --git a/libpkg/tests/data.cpp b/libpkg/tests/data.cpp index 5769b67..8598ed0 100644 --- a/libpkg/tests/data.cpp +++ b/libpkg/tests/data.cpp @@ -228,7 +228,10 @@ void DataTests::testPackageSearch() { setupPackages(); - auto pkgs = m_config.findPackages("foo"sv); + auto pkgs = m_config.findPackages(std::string_view()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("no results for package with empty name", 0_st, pkgs.size()); + + pkgs = m_config.findPackages("foo"sv); CPPUNIT_ASSERT_EQUAL(2_st, pkgs.size()); CPPUNIT_ASSERT_EQUAL_MESSAGE("package from first db returned first, cached object returned", m_pkg1, pkgs.front().pkg); CPPUNIT_ASSERT_EQUAL_MESSAGE("package from first db returned second, cached object returned", m_pkg3, pkgs.back().pkg);