Hi, On 04/29/13 07:11, Daniel-Constantin Mierla wrote: > Hello, > > On 4/10/13 3:36 PM, Richard Fuchs wrote: >> -int db_mysql_free_result(db1_con_t* _h, db1_res_t* _r); >> +int db_mysql_free_result(const db1_con_t* _h, db1_res_t* _r); > the change to the prototype of the above function is now throwing > compilation warning: > > km_db_mysql.c: In function ‘db_mysql_bind_api’: > km_db_mysql.c:109: warning: assignment from incompatible pointer type > > Do you need the const specifier? If yes, the DB API and probably the > other database drivers need to be updated.
The const is needed because db_mysql_free_result is called from other functions which have the db1_con_t object declared as const. Removing the const from the prototype would trigger warnings elsewhere. The idea is that the driver-specific result set should really be stored in the db1_res_t object, and not in db1_con_t as the other drivers do it now (which was causing the segfault). Therefore, ->free_result really has no reason to modify the db1_con_t object, which warrants the const modifier. Preferably the other drivers should be updated to follow the same reasoning, after which the const can be put into db_func_t, but I don't have enough experience with them to do it myself. Alternatively, the const could probably be removed from this and a few other function prototypes, or maybe a wrapper function could be used. cheers
signature.asc
Description: OpenPGP digital signature
_______________________________________________ sr-dev mailing list [email protected] http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
