diff --git a/src/binding.cpp b/src/binding.cpp index 4308466..3d573a8 100644 --- a/src/binding.cpp +++ b/src/binding.cpp @@ -24,14 +24,14 @@ Nan::Persistent RocksDBCache::constructor; rocksdb::Status OpenDB(const rocksdb::Options& options, const std::string& name, std::unique_ptr& dbptr) { rocksdb::DB* db; rocksdb::Status status = rocksdb::DB::Open(options, name, &db); - dbptr = std::move(std::unique_ptr(db)); + dbptr = std::unique_ptr(db); return status; } rocksdb::Status OpenForReadOnlyDB(const rocksdb::Options& options, const std::string& name, std::unique_ptr& dbptr) { rocksdb::DB* db; rocksdb::Status status = rocksdb::DB::OpenForReadOnly(options, name, &db); - dbptr = std::move(std::unique_ptr(db)); + dbptr = std::unique_ptr(db); return status; } @@ -1093,7 +1093,9 @@ struct Context { uint32_t mask; double relev; - Context(Context const& c) = default; + Context() = delete; + Context(Context const& c) = delete; + Context& operator=(Context const& c) = delete; Context(Cover && cov, uint32_t mask, double relev) @@ -1293,12 +1295,12 @@ double scoredist(unsigned zoom, double distance, double score) { void coalesceFinalize(CoalesceBaton* baton, std::vector && contexts) { if (!contexts.empty()) { + std::size_t max_contexts = std::min(contexts.size(),static_cast(40)); // Coalesce stack, generate relevs. double relevMax = contexts[0].relev; std::size_t total = 0; std::map sets; std::map::iterator sit; - std::size_t max_contexts = 40; baton->features.reserve(max_contexts); for (auto && context : contexts) { // Maximum allowance of coalesced features: 40. @@ -1412,12 +1414,13 @@ void coalesceSingle(uv_work_t* req) { } // sort grids by distance to proximity point + // TODO: partial_sort here would be ideal std::sort(covers.begin(), covers.end(), coverSortByRelev); + std::size_t max_contexts = std::min(covers.size(),static_cast(40)); uint32_t lastid = 0; std::size_t added = 0; std::vector contexts; - std::size_t max_contexts = 40; contexts.reserve(max_contexts); for (auto && cover : covers) { // Stop at 40 contexts @@ -1623,7 +1626,7 @@ void coalesceMulti(uv_work_t* req) { contexts.emplace_back(std::move(context)); } } - + // TODO: partial_sort here would be ideal std::sort(contexts.begin(), contexts.end(), contextSortByRelev); coalesceFinalize(baton, std::move(contexts)); } catch (std::exception const& ex) {