codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <stdlib.h> #include <stdio.h> #include <lmdb.h> // [01:00:55 eldil!11 py-lmdb] gcc -g -I lib -o break break.c lib/mdb.c lib/midl.c #define KEYS 0xffff static void must(int rc) { if(rc) { fprintf(stderr, "errk, %s\n", mdb_strerror(rc)); abort(); } } int main(int argc, char **argv) { char keybuf[8]; int i; MDB_env *env; must(mdb_env_create(&env)); system("rm -rf /tmp/crashdb*"); must(mdb_env_set_mapsize(env, 1048576 * 1024)); must(mdb_env_open(env, "/tmp/crashdb", MDB_NOSUBDIR, 0777)); MDB_txn *txn; must(mdb_txn_begin(env, NULL, 0, &txn)); MDB_dbi dbi; must(mdb_dbi_open(txn, NULL, 0, &dbi)); MDB_val k = {5, keybuf}; for(i = 0; i <= KEYS; i++) { sprintf(keybuf, "%05d", i); // MDB_APPEND is not necessary to trigger issue. must(mdb_put(txn, dbi, &k, &k, MDB_APPEND)); } printf("inserted %d keys\n", i); MDB_cursor *cur; must(mdb_cursor_open(txn, dbi, &cur)); must(mdb_cursor_get(cur, &k, &k, MDB_LAST)); for(i = KEYS; i >= 0; i--) { sprintf(keybuf, "%05d", i); must(mdb_cursor_get(cur, &k, &k, MDB_GET_CURRENT)); must(strncmp(keybuf, k.mv_data, k.mv_size)); must(mdb_cursor_get(cur, &k, &k, MDB_PREV)); } }
Private
[
?
]
Run code
Submit