I am developing a shim, and am facing a problem (or it might be a defect in
the sample shims I have seen so far):
- When I receive a call to my xOpen function, the 3rd parameter is a
sqlite3_file* type.
- As per the sqlite3PagerOpen function, the size of the memory allocated to
this pointer is ROUND8(pVfs->szOsFile).
- On Windows, the value of szOsFile is sizeof(winFile) + sizeof(myFile).
- As per the sample shims, in my xOpen handler, I must typecast the
sqlite3_file* value to myFile*
Does this mean that winFile and myFile are now overlapping at the same
memory location?
For example: if sqlite3_file is defined as:
struct sqlite3_file {
const struct sqlite3_io_methods *pMethods; /* Methods for an open file */
};
and winFile is defined as:
struct winFile {
const sqlite3_io_methods *pMethod; /*** Must be first ***/
sqlite3_vfs *pVfs; /* The VFS used to open this file */
};
and myFile is defined as (taken from multiplex sample shim):
struct myFile {
sqlite3_file base; /* Base class - must be first */
multiplexGroup *pGroup; /* The underlying group of files */
};
Wouldn't winFile::pVfs and myFile::pGroup be at the same location in memory?
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users