I use libdrizzle-1.0 from 2554 revision. When I read result packet from server with drizzle_result_read(...) function and the packet is EOF, the result options are reset to DRIZZLE_RESULT_EOF_PACKET (see drizzle_state_result_read(...)). Then if I try to release result data with drizzle_result_free_all(...) it doesn't work because drizzle_result_free(...) code checks result options for DRIZZLE_RESULT_ALLOCATED bit before deletion, if this bit is not set result will not be deleted. But this bit was reset in drizzle_state_result_read(...). So if the result packet is read with drizzle_result_read(...) and the packet is EOF, it's impossible to release result object with drizzle_result_free_all(...).