[asterisk-dev] cdr_odbc.c is broken in trunk
nick at lurcher.org
Thu Jan 10 05:18:03 CST 2008
The change to use prepare_cb() in odbc_log became broken in r88182.
The code calls SQLBindParameter on a local variable (timestr) but as it
now doesn't call SQLExecute in the same function when it finally gets to
SQLExecute that variable is out of scope.
I dont know if I can pass attachments to this list, so the fixed cdr can
be found here http://www.lurcher.org/~nick/cdr_odbc.c
The code contained the following lines
/* We really should only have to do this once. But for some
* strange reason if I don't it blows holes in memory like
* like a shotgun. So we just do this so its safe.
The "strange reason", as I have tried to report several times now via
the forum, is that the memory passed to SQLBindParameter is not
referenced until the SQLExecute, that the point of binding parameters,
you pass the address of the storage, then before the SQLExecute you set
the values you intend to use.
Easysoft and unixODBC
More information about the asterisk-dev