I found a bug in my program caused by me not calling drizzle_result_free
before reusing a drizzle_result_st structure. This ends up causing an
infinite loop when drizzle_result_free gets called in the future, since
both the next and prev pointers point to the same thing.
I have a hack in my branch to detect this error in one case: if you
attempt to re-use the result structure with the same connection, I
search the connection's result list to see if it is already there. I
can't solve the case where you attempt to use it with another
connection. This will likely cause a double free or similar situation.
I'm unsure if this is worth actually including in libdrizzle, but the
changeset is here for review:
https://code.launchpad.net/~evanj/libdrizzle/dev
As a side note, what is the libdrizzle policy about assertions? There
are a few places where I could add assert() statements that would crash
on this error (such as when result->next == result->prev). Personally I
love assertions, since they would have made this error obvious, rather
than me needing to debug an infinite loop.
Evan
--
Evan Jones
http://evanjones.ca/
_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help : https://help.launchpad.net/ListHelp