Skip to content

Commit 21646dd

Browse files
author
fuli
committed
fixed a bug in btree.
1 parent 1578595 commit 21646dd

File tree

2 files changed

+4
-10
lines changed

2 files changed

+4
-10
lines changed

include/btree.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ namespace alg {
8787
s->flag &= ~LEAF;
8888
s->flag |= ONDISK; // write to offset 0
8989
s->offset = 0;
90+
s->n = 0;
9091
s->c[0] = m_root->offset;
9192
// free old & set new
9293
free(m_root);
@@ -141,6 +142,7 @@ namespace alg {
141142
i = i+1;
142143
}
143144
}
145+
xi = READ(x, i); // reload x[i]
144146
insert_nonfull(xi, k);
145147
free(xi);
146148
}
@@ -167,9 +169,6 @@ namespace alg {
167169
std::auto_ptr<node_t> y(READ(x, i));
168170
z->flag &= ~LEAF;
169171
z->flag |= (y->flag & LEAF);
170-
printf("leafz:%x\n", z->flag);
171-
printf("leafy:%x\n", y->flag);
172-
printf("leafx:%x offset:%x\n", x->flag, x->offset);
173172
z->n = T - 1;
174173

175174
int32_t j;
@@ -195,7 +194,7 @@ namespace alg {
195194
for (j=x->n-1;j>=i;j--) { // move keys in x
196195
x->key[j+1] = x->key[j];
197196
}
198-
x->key[i] = y->key[T-1];
197+
x->key[i] = y->key[T-1]; // copy the middle element of y into x
199198
x->n = x->n+1;
200199
WRITE(x);
201200
}
@@ -209,7 +208,7 @@ namespace alg {
209208
read(fd, xi, BLOCKSIZE);
210209
return (node)xi;
211210
}
212-
211+
213212
/**
214213
* update a node struct to file, create if offset is -1.
215214
*/

src/btree_demo.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@ int main(void) {
66
BTree x("./btree.dat");
77
int32_t i;
88

9-
/*
109
for (i=0;i<1024;i++) {
1110
x.Insert(i);
12-
}
13-
*/
14-
15-
for(i=0;i<1024;i++) {
1611
int32_t r = x.Search(i);
1712
printf("idx[%d]\n", r);
1813
}

0 commit comments

Comments
 (0)