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");

Reply via email to