projects
/
libcds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'ldionne-ldionne-cmake' into dev
[libcds.git]
/
cds
/
intrusive
/
impl
/
feldman_hashset.h
diff --git
a/cds/intrusive/impl/feldman_hashset.h
b/cds/intrusive/impl/feldman_hashset.h
index 279641b3bc9accf8d189d365a9294b2ff57304db..95f1888af8dfe34583e7114df9929a59859ff9c3 100644
(file)
--- a/
cds/intrusive/impl/feldman_hashset.h
+++ b/
cds/intrusive/impl/feldman_hashset.h
@@
-565,8
+565,8
@@
namespace cds { namespace intrusive {
public:
/// Creates empty set
/**
public:
/// Creates empty set
/**
- @param head_bits
:
2<sup>head_bits</sup> specifies the size of head array, minimum is 4.
- @param array_bits
:
2<sup>array_bits</sup> specifies the size of array node, minimum is 2.
+ @param head_bits
-
2<sup>head_bits</sup> specifies the size of head array, minimum is 4.
+ @param array_bits
-
2<sup>array_bits</sup> specifies the size of array node, minimum is 2.
Equation for \p head_bits and \p array_bits:
\code
Equation for \p head_bits and \p array_bits:
\code
@@
-640,8
+640,12
@@
namespace cds { namespace intrusive {
return false;
}
return false;
}
- // the slot must be expanded
- base_class::expand_slot( pos, slot );
+ if ( !pos.splitter.eos()) {
+ // the slot must be expanded
+ base_class::expand_slot( pos, slot );
+ }
+ else
+ return false;
}
else {
// the slot is empty, try to insert data node
}
else {
// the slot is empty, try to insert data node
@@
-1215,8
+1219,12
@@
namespace cds { namespace intrusive {
}
if ( bInsert ) {
}
if ( bInsert ) {
- // the slot must be expanded
- base_class::expand_slot( pos, slot );
+ if ( !pos.splitter.eos()) {
+ // the slot must be expanded
+ base_class::expand_slot( pos, slot );
+ }
+ else
+ return std::make_pair( false, false );
}
else {
stats().onUpdateFailed();
}
else {
stats().onUpdateFailed();