[GRASS5] [bug #4349] (grass) Segfault in several display
modules on x86_64
Glynn Clements
glynn at gclements.plus.com
Fri Apr 28 13:08:48 EDT 2006
Hamish wrote:
> > > libdb is calling db_version, expecting to call its own function of
> > > that name, but it's actually calling the one in libgrass_dbmiclient.
> > >
> > > I'm not sure that there's any solution other than to rename the DBMI
> > > functions to use a different prefix (one which isn't already used by
> > > a common system library).
> >
> > Maybe
> >
> > db_gversion
>
> That's for that one function, there are lots of generic-named fns in the
> dmbi lib like db_delete() etc..
>
> maybe make them all dbmi_* ? I guess gdb_ is no good.. :)
>
> DB_*
> ?
That's what I thought. Then I remembered that the linker might not be
case sensitive. Then, I realised that if the linker isn't case
sensitive, using GRASS in a GTK+ is out of the question, as libgis
(G_*) will conflict with glib (g_*), e.g. G_malloc() vs g_malloc().
DBMI_* would probably be safe enough.
In any case, renaming all of the db_* functions isn't really an option
Doing it by hand is out of the question (275 source files). A script
to change identifiers beginning with db_ might change variable or type
names.
Fortunately, the Berkely DB library only exports a few functions
beginning with "db_" (the main interface is via function pointers in
the DB structure). Apart from the 19 db_env_set_func_* functions, it
only exports:
db_create
db_env_create
db_strerror
db_version
db_version is the only one which currently conflicts with the DBMI
library.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list