Hi, I just wanted to note that it should work just to use (make-pointer #xff).
- Daniel On Tue, May 1, 2012 at 5:01 PM, Joonas Sarajärvi <m...@iki.fi> wrote: > 2012/5/1 Joonas Sarajärvi <m...@iki.fi>: > >> However, thank you for taking a look at the problem. The change you >> placed at >> git://gitorious.org/~sunjoong/guile-sqlite3/sunjoongs-guile-sqlite3.git >> seems to completely resolve the crash for me. >> >> -Joonas > > Replying to myself, I now noticed that the change will not work in a > 64-bit computer. My impression is that this is due to the fact that > the 5th parameter taken by sqlite3_bind_text function is really a > pointer and not an int. On amd64 computers, int are 4 bytes wide while > pointers are 8 bytes. > > I also think that the older way of passing SQLITE_TRANSIENT as a > pointer should work. However, there was a small bug in the code that > constructed the pointer. I made a yet-another clone of the main > guile-sqlite3 repository and pushed a change that I think fixes this. > The change I did is also here: > > diff --git a/sqlite3.scm b/sqlite3.scm > index fcc1fdf..5047e71 100644 > --- a/sqlite3.scm > +++ b/sqlite3.scm > @@ -301,8 +301,9 @@ > int > (dynamic-func "sqlite3_bind_null" libsqlite3) > (list '* int))) > - (sqlite-transient (bytevector->pointer > - (make-bytevector (sizeof '*) #xff)))) > + (sqlite-transient (dereference-pointer > + (bytevector->pointer > + (make-bytevector (sizeof '*) #xff))))) > (lambda (stmt key val) > (assert-live-stmt! stmt) > (let ((idx (key->index stmt key)) > > > The test case by Sunjoong Lee is also cherry-picked to the git branch > I placed on gitorious. Hopefully it was acceptable to include it. > Should I make a merge request of this? > > -Joonas >