tags 427353 + patch
thanks
hi,
i think attached patch solves this issue,
bye,
- michael
diff -ruN orig/libdb4.2-ruby-0.5.8/src/common.c patch/libdb4.2-ruby-0.5.8/src/common.c
--- orig/libdb4.2-ruby-0.5.8/src/common.c 2007-06-04 10:38:06.000000000 +0200
+++ patch/libdb4.2-ruby-0.5.8/src/common.c 2007-06-04 13:18:27.000000000 +0200
@@ -124,7 +124,7 @@
}
key->data = StringValuePtr(tmp);
key->flags &= ~DB_DBT_MALLOC;
- key->size = RSTRING(tmp)->len + is_nil;
+ key->size = RSTRING_LEN(tmp) + is_nil;
return tmp;
}
@@ -3791,7 +3791,11 @@
char *file, *database;
VALUE flagv = Qnil, iov = Qnil;
int flags = 0;
+#if RUBY_VERSION_CODE >= 190
+ rb_io_t *fptr;
+#else
OpenFile *fptr;
+#endif
FILE *io = NULL;
rb_secure(4);
diff -ruN orig/libdb4.2-ruby-0.5.8/src/env.c patch/libdb4.2-ruby-0.5.8/src/env.c
--- orig/libdb4.2-ruby-0.5.8/src/env.c 2005-11-25 14:17:49.000000000 +0100
+++ patch/libdb4.2-ruby-0.5.8/src/env.c 2007-06-04 13:19:28.000000000 +0200
@@ -119,9 +119,9 @@
bv = rb_str_to_str(bv);
MEMZERO(&control, DBT, 1);
MEMZERO(&rec, DBT, 1);
- control.size = RSTRING(av)->len;
+ control.size = RSTRING_LEN(av);
control.data = StringValuePtr(av);
- rec.size = RSTRING(bv)->len;
+ rec.size = RSTRING_LEN(bv);
rec.data = StringValuePtr(bv);
envid = NUM2INT(ev);
#if BDB_VERSION >= 40200
@@ -159,7 +159,7 @@
if (!NIL_P(ident)) {
ident = rb_str_to_str(ident);
MEMZERO(&cdata, DBT, 1);
- cdata.size = RSTRING(ident)->len;
+ cdata.size = RSTRING_LEN(ident);
cdata.data = StringValuePtr(ident);
}
bdb_test_error(envst->envp->rep_start(envst->envp,
@@ -523,7 +523,7 @@
{
char *tmp;
- tmp = ALLOCA_N(char, strlen("DB_DATA_DIR") + RSTRING(value)->len + 2);
+ tmp = ALLOCA_N(char, strlen("DB_DATA_DIR") + RSTRING_LEN(value) + 2);
sprintf(tmp, "DB_DATA_DIR %s", StringValuePtr(value));
rb_ary_push(db_st->config, rb_str_new2(tmp));
}
@@ -537,7 +537,7 @@
{
char *tmp;
- tmp = ALLOCA_N(char, strlen("DB_LOG_DIR") + RSTRING(value)->len + 2);
+ tmp = ALLOCA_N(char, strlen("DB_LOG_DIR") + RSTRING_LEN(value) + 2);
sprintf(tmp, "DB_LOG_DIR %s", StringValuePtr(value));
rb_ary_push(db_st->config, rb_str_new2(tmp));
}
@@ -551,7 +551,7 @@
{
char *tmp;
- tmp = ALLOCA_N(char, strlen("DB_TMP_DIR") + RSTRING(value)->len + 2);
+ tmp = ALLOCA_N(char, strlen("DB_TMP_DIR") + RSTRING_LEN(value) + 2);
sprintf(tmp, "DB_TMP_DIR %s", StringValuePtr(value));
rb_ary_push(db_st->config, rb_str_new2(tmp));
}
diff -ruN orig/libdb4.2-ruby-0.5.8/src/lock.c patch/libdb4.2-ruby-0.5.8/src/lock.c
--- orig/libdb4.2-ruby-0.5.8/src/lock.c 2005-11-25 14:25:58.000000000 +0100
+++ patch/libdb4.2-ruby-0.5.8/src/lock.c 2007-06-04 13:19:58.000000000 +0200
@@ -266,7 +266,7 @@
SafeStringValue(a);
MEMZERO(&objet, DBT, 1);
objet.data = StringValuePtr(a);
- objet.size = RSTRING(a)->len;
+ objet.size = RSTRING_LEN(a);
lock_mode = NUM2INT(b);
GetLockid(obj, lockid, envst);
#if BDB_VERSION < 30000
@@ -340,7 +340,7 @@
list->obj = ALLOC(DBT);
MEMZERO(list->obj, DBT, 1);
list->obj->data = StringValuePtr(value);
- list->obj->size = RSTRING(value)->len;
+ list->obj->size = RSTRING_LEN(value);
}
else if (strcmp(options, "mode") == 0) {
list->mode = NUM2INT(value);
diff -ruN orig/libdb4.2-ruby-0.5.8/src/log.c patch/libdb4.2-ruby-0.5.8/src/log.c
--- orig/libdb4.2-ruby-0.5.8/src/log.c 2005-11-25 14:31:23.000000000 +0100
+++ patch/libdb4.2-ruby-0.5.8/src/log.c 2007-06-04 13:20:40.000000000 +0200
@@ -55,7 +55,7 @@
ret = bdb_makelsn(obj);
Data_Get_Struct(ret, struct dblsnst, lsnst);
data.data = StringValuePtr(a);
- data.size = RSTRING(a)->len;
+ data.size = RSTRING_LEN(a);
#if BDB_VERSION < 30000
if (!envst->envp->lg_info) {
rb_raise(bdb_eFatal, "log region not open");