|
Lines 1-24
Link Here
|
| 1 |
--- src/common.c.orig 2011-04-06 19:35:39.000000000 +0000 |
1 |
Upstream pull request link: |
| 2 |
+++ src/common.c 2015-01-22 17:10:32.000000000 +0000 |
2 |
https://github.com/knu/ruby-bdb/pull/6 |
| 3 |
@@ -1229,7 +1229,7 @@ |
3 |
|
|
|
4 |
--- src/common.c.orig 2011-04-06 19:35:39 UTC |
| 5 |
+++ src/common.c |
| 6 |
@@ -1229,7 +1229,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj) |
| 4 |
if (argc && TYPE(argv[argc - 1]) == T_HASH) { |
7 |
if (argc && TYPE(argv[argc - 1]) == T_HASH) { |
| 5 |
VALUE v, f = argv[argc - 1]; |
8 |
VALUE v, f = argv[argc - 1]; |
| 6 |
|
9 |
|
| 7 |
- if ((v = rb_hash_aref(f, rb_str_new2("txn"))) != RHASH(f)->ifnone) { |
10 |
- if ((v = rb_hash_aref(f, rb_str_new2("txn"))) != RHASH(f)->ifnone) { |
| 8 |
+ if ((v = rb_hash_aref(f, rb_str_new2("txn"))) != rb_hash_ifnone(f)) { |
11 |
+ if ((v = rb_hash_aref(f, rb_str_new2("txn"))) != rb_hash_ifnone(f)) { |
| 9 |
if (!rb_obj_is_kind_of(v, bdb_cTxn)) { |
12 |
if (!rb_obj_is_kind_of(v, bdb_cTxn)) { |
| 10 |
rb_raise(bdb_eFatal, "argument of txn must be a transaction"); |
13 |
rb_raise(bdb_eFatal, "argument of txn must be a transaction"); |
| 11 |
} |
14 |
} |
| 12 |
@@ -1241,7 +1241,7 @@ |
15 |
@@ -1241,7 +1241,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj) |
| 13 |
dbst->options |= envst->options & BDB_NO_THREAD; |
16 |
dbst->options |= envst->options & BDB_NO_THREAD; |
| 14 |
dbst->marshal = txnst->marshal; |
17 |
dbst->marshal = txnst->marshal; |
| 15 |
} |
18 |
} |
| 16 |
- else if ((v = rb_hash_aref(f, rb_str_new2("env"))) != RHASH(f)->ifnone) { |
19 |
- else if ((v = rb_hash_aref(f, rb_str_new2("env"))) != RHASH(f)->ifnone) { |
| 17 |
+ else if ((v = rb_hash_aref(f, rb_str_new2("env"))) != rb_hash_ifnone(f)) { |
20 |
+ else if ((v = rb_hash_aref(f, rb_str_new2("env"))) != rb_hash_ifnone(f)) { |
| 18 |
if (!rb_obj_is_kind_of(v, bdb_cEnv)) { |
21 |
if (!rb_obj_is_kind_of(v, bdb_cEnv)) { |
| 19 |
rb_raise(bdb_eFatal, "argument of env must be an environnement"); |
22 |
rb_raise(bdb_eFatal, "argument of env must be an environnement"); |
| 20 |
} |
23 |
} |
| 21 |
@@ -1254,11 +1254,11 @@ |
24 |
@@ -1254,11 +1254,11 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj) |
| 22 |
#if HAVE_CONST_DB_ENCRYPT |
25 |
#if HAVE_CONST_DB_ENCRYPT |
| 23 |
if (envst && (envst->options & BDB_ENV_ENCRYPT)) { |
26 |
if (envst && (envst->options & BDB_ENV_ENCRYPT)) { |
| 24 |
VALUE tmp = rb_str_new2("set_flags"); |
27 |
VALUE tmp = rb_str_new2("set_flags"); |
|
Lines 32-108
Link Here
|
| 32 |
rb_hash_aset(f, tmp, INT2NUM(NUM2INT(v) | DB_ENCRYPT)); |
35 |
rb_hash_aset(f, tmp, INT2NUM(NUM2INT(v) | DB_ENCRYPT)); |
| 33 |
} |
36 |
} |
| 34 |
else { |
37 |
else { |
| 35 |
@@ -1570,10 +1570,10 @@ |
38 |
@@ -1277,16 +1277,16 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj) |
|
|
39 |
dbst->marshal = obj; |
| 40 |
dbst->options |= BDB_MARSHAL; |
| 41 |
} |
| 42 |
- if (rb_method_boundp(obj, rb_intern("bdb_store_key"), 0) == Qtrue) { |
| 43 |
+ if (rb_method_boundp(obj, rb_intern("bdb_store_key"), 0) == 1) { |
| 44 |
dbst->filter[FILTER_KEY] = INT2FIX(rb_intern("bdb_store_key")); |
| 45 |
} |
| 46 |
- if (rb_method_boundp(obj, rb_intern("bdb_fetch_key"), 0) == Qtrue) { |
| 47 |
+ if (rb_method_boundp(obj, rb_intern("bdb_fetch_key"), 0) == 1) { |
| 48 |
dbst->filter[2 + FILTER_KEY] = INT2FIX(rb_intern("bdb_fetch_key")); |
| 49 |
} |
| 50 |
- if (rb_method_boundp(obj, rb_intern("bdb_store_value"), 0) == Qtrue) { |
| 51 |
+ if (rb_method_boundp(obj, rb_intern("bdb_store_value"), 0) == 1) { |
| 52 |
dbst->filter[FILTER_VALUE] = INT2FIX(rb_intern("bdb_store_value")); |
| 53 |
} |
| 54 |
- if (rb_method_boundp(obj, rb_intern("bdb_fetch_value"), 0) == Qtrue) { |
| 55 |
+ if (rb_method_boundp(obj, rb_intern("bdb_fetch_value"), 0) == 1) { |
| 56 |
dbst->filter[2 + FILTER_VALUE] = INT2FIX(rb_intern("bdb_fetch_value")); |
| 57 |
} |
| 58 |
rb_obj_call_init(res, argc, argv); |
| 59 |
@@ -1570,10 +1570,10 @@ bdb_init(int argc, VALUE *argv, VALUE obj) |
| 36 |
#endif |
60 |
#endif |
| 37 |
switch(dbst->type) { |
61 |
switch(dbst->type) { |
| 38 |
case DB_BTREE: |
62 |
case DB_BTREE: |
| 39 |
- RBASIC(obj)->klass = bdb_cBtree; |
63 |
- RBASIC(obj)->klass = bdb_cBtree; |
| 40 |
+ RBASIC_SET_CLASS_RAW(obj, bdb_cBtree); |
64 |
+ rb_obj_reveal(obj, bdb_cBtree); |
| 41 |
break; |
65 |
break; |
| 42 |
case DB_HASH: |
66 |
case DB_HASH: |
| 43 |
- RBASIC(obj)->klass = bdb_cHash; |
67 |
- RBASIC(obj)->klass = bdb_cHash; |
| 44 |
+ RBASIC_SET_CLASS_RAW(obj, bdb_cHash); |
68 |
+ rb_obj_reveal(obj, bdb_cHash); |
| 45 |
break; |
69 |
break; |
| 46 |
case DB_RECNO: |
70 |
case DB_RECNO: |
| 47 |
{ |
71 |
{ |
| 48 |
@@ -1581,17 +1581,17 @@ |
72 |
@@ -1581,17 +1581,17 @@ bdb_init(int argc, VALUE *argv, VALUE obj) |
| 49 |
|
73 |
|
| 50 |
rb_warning("It's hard to distinguish Recnum with Recno for all versions of Berkeley DB"); |
74 |
rb_warning("It's hard to distinguish Recnum with Recno for all versions of Berkeley DB"); |
| 51 |
if ((count = bdb_is_recnum(dbst->dbp)) != -1) { |
75 |
if ((count = bdb_is_recnum(dbst->dbp)) != -1) { |
| 52 |
- RBASIC(obj)->klass = bdb_cRecnum; |
76 |
- RBASIC(obj)->klass = bdb_cRecnum; |
| 53 |
+ RBASIC_SET_CLASS_RAW(obj, bdb_cRecnum); |
77 |
+ rb_obj_reveal(obj, bdb_cRecnum); |
| 54 |
dbst->len = count; |
78 |
dbst->len = count; |
| 55 |
} |
79 |
} |
| 56 |
else { |
80 |
else { |
| 57 |
- RBASIC(obj)->klass = bdb_cRecno; |
81 |
- RBASIC(obj)->klass = bdb_cRecno; |
| 58 |
+ RBASIC_SET_CLASS_RAW(obj, bdb_cRecno); |
82 |
+ rb_obj_reveal(obj, bdb_cRecno); |
| 59 |
} |
83 |
} |
| 60 |
break; |
84 |
break; |
| 61 |
} |
85 |
} |
| 62 |
#if HAVE_CONST_DB_QUEUE |
86 |
#if HAVE_CONST_DB_QUEUE |
| 63 |
case DB_QUEUE: |
87 |
case DB_QUEUE: |
| 64 |
- RBASIC(obj)->klass = bdb_cQueue; |
88 |
- RBASIC(obj)->klass = bdb_cQueue; |
| 65 |
+ RBASIC_SET_CLASS_RAW(obj, bdb_cQueue); |
89 |
+ rb_obj_reveal(obj, bdb_cQueue); |
| 66 |
break; |
90 |
break; |
| 67 |
#endif |
91 |
#endif |
| 68 |
default: |
92 |
default: |
| 69 |
@@ -1635,29 +1635,29 @@ |
93 |
@@ -1635,29 +1635,29 @@ bdb_s_alloc(obj) |
| 70 |
dbst->options = BDB_NOT_OPEN; |
94 |
dbst->options = BDB_NOT_OPEN; |
| 71 |
cl = obj; |
95 |
cl = obj; |
| 72 |
while (cl) { |
96 |
while (cl) { |
| 73 |
- if (cl == bdb_cBtree || RCLASS(cl)->m_tbl == RCLASS(bdb_cBtree)->m_tbl) { |
97 |
- if (cl == bdb_cBtree || RCLASS(cl)->m_tbl == RCLASS(bdb_cBtree)->m_tbl) { |
| 74 |
+ if (cl == bdb_cBtree || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cBtree)) { |
98 |
+ if (cl == bdb_cBtree || RTEST(rb_funcall(cl, rb_intern("<="), 1, bdb_cBtree))) { |
| 75 |
dbst->type = DB_BTREE; |
99 |
dbst->type = DB_BTREE; |
| 76 |
break; |
100 |
break; |
| 77 |
} |
101 |
} |
| 78 |
- if (cl == bdb_cRecnum || RCLASS(cl)->m_tbl == RCLASS(bdb_cRecnum)->m_tbl) { |
102 |
- if (cl == bdb_cRecnum || RCLASS(cl)->m_tbl == RCLASS(bdb_cRecnum)->m_tbl) { |
| 79 |
+ if (cl == bdb_cRecnum || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cRecnum)) { |
103 |
+ if (cl == bdb_cRecnum || RTEST(rb_funcall(cl, rb_intern("<="), 1, bdb_cRecnum))) { |
| 80 |
dbst->type = DB_RECNO; |
104 |
dbst->type = DB_RECNO; |
| 81 |
break; |
105 |
break; |
| 82 |
} |
106 |
} |
| 83 |
- else if (cl == bdb_cHash || RCLASS(cl)->m_tbl == RCLASS(bdb_cHash)->m_tbl) { |
107 |
- else if (cl == bdb_cHash || RCLASS(cl)->m_tbl == RCLASS(bdb_cHash)->m_tbl) { |
| 84 |
+ else if (cl == bdb_cHash || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cHash)) { |
108 |
+ else if (cl == bdb_cHash || RTEST(rb_funcall(cl, rb_intern("<="), 1, bdb_cHash))) { |
| 85 |
dbst->type = DB_HASH; |
109 |
dbst->type = DB_HASH; |
| 86 |
break; |
110 |
break; |
| 87 |
} |
111 |
} |
| 88 |
- else if (cl == bdb_cRecno || RCLASS(cl)->m_tbl == RCLASS(bdb_cRecno)->m_tbl) { |
112 |
- else if (cl == bdb_cRecno || RCLASS(cl)->m_tbl == RCLASS(bdb_cRecno)->m_tbl) { |
| 89 |
+ else if (cl == bdb_cRecno || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cRecno)) { |
113 |
+ else if (cl == bdb_cRecno || RTEST(rb_funcall(cl, rb_intern("<="), 1, bdb_cRecno))) { |
| 90 |
dbst->type = DB_RECNO; |
114 |
dbst->type = DB_RECNO; |
| 91 |
break; |
115 |
break; |
| 92 |
} |
116 |
} |
| 93 |
#if HAVE_CONST_DB_QUEUE |
117 |
#if HAVE_CONST_DB_QUEUE |
| 94 |
- else if (cl == bdb_cQueue || RCLASS(cl)->m_tbl == RCLASS(bdb_cQueue)->m_tbl) { |
118 |
- else if (cl == bdb_cQueue || RCLASS(cl)->m_tbl == RCLASS(bdb_cQueue)->m_tbl) { |
| 95 |
+ else if (cl == bdb_cQueue || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cQueue)) { |
119 |
+ else if (cl == bdb_cQueue || RTEST(rb_funcall(cl, rb_intern("<="), 1, bdb_cQueue))) { |
| 96 |
dbst->type = DB_QUEUE; |
120 |
dbst->type = DB_QUEUE; |
| 97 |
break; |
121 |
break; |
| 98 |
} |
122 |
} |
| 99 |
#endif |
123 |
#endif |
| 100 |
- else if (cl == bdb_cUnknown || RCLASS(cl)->m_tbl == RCLASS(bdb_cUnknown)->m_tbl) { |
124 |
- else if (cl == bdb_cUnknown || RCLASS(cl)->m_tbl == RCLASS(bdb_cUnknown)->m_tbl) { |
| 101 |
+ else if (cl == bdb_cUnknown || RCLASS_M_TBL(cl) == RCLASS_M_TBL(bdb_cUnknown)) { |
125 |
+ else if (cl == bdb_cUnknown || RTEST(rb_funcall(cl, rb_intern("<="), 1, bdb_cUnknown))) { |
| 102 |
dbst->type = DB_UNKNOWN; |
126 |
dbst->type = DB_UNKNOWN; |
| 103 |
break; |
127 |
break; |
| 104 |
} |
128 |
} |
| 105 |
@@ -3004,8 +3004,8 @@ |
129 |
@@ -3004,8 +3004,8 @@ bdb_each_kvc(argc, argv, obj, sens, replace, type) |
| 106 |
|
130 |
|
| 107 |
if (argc && TYPE(argv[argc - 1]) == T_HASH) { |
131 |
if (argc && TYPE(argv[argc - 1]) == T_HASH) { |
| 108 |
VALUE g, f = argv[argc - 1]; |
132 |
VALUE g, f = argv[argc - 1]; |
|
Lines 113-119
Link Here
|
| 113 |
flags = NUM2INT(g); |
137 |
flags = NUM2INT(g); |
| 114 |
} |
138 |
} |
| 115 |
argc--; |
139 |
argc--; |
| 116 |
@@ -3323,8 +3323,8 @@ |
140 |
@@ -3323,8 +3323,8 @@ bdb_clear(int argc, VALUE *argv, VALUE obj) |
| 117 |
flags = 0; |
141 |
flags = 0; |
| 118 |
if (argc && TYPE(argv[argc - 1]) == T_HASH) { |
142 |
if (argc && TYPE(argv[argc - 1]) == T_HASH) { |
| 119 |
VALUE g, f = argv[argc - 1]; |
143 |
VALUE g, f = argv[argc - 1]; |
|
Lines 124-130
Link Here
|
| 124 |
flags = NUM2INT(g); |
148 |
flags = NUM2INT(g); |
| 125 |
} |
149 |
} |
| 126 |
argc--; |
150 |
argc--; |
| 127 |
@@ -3348,8 +3348,8 @@ |
151 |
@@ -3348,8 +3348,8 @@ bdb_replace(int argc, VALUE *argv, VALUE obj) |
| 128 |
flags = 0; |
152 |
flags = 0; |
| 129 |
if (TYPE(argv[argc - 1]) == T_HASH) { |
153 |
if (TYPE(argv[argc - 1]) == T_HASH) { |
| 130 |
VALUE f = argv[argc - 1]; |
154 |
VALUE f = argv[argc - 1]; |