mysql_stmt_close() is inconsistent in 10.0 and 10.1. It returns 1 on an error and 0 on success. But the stmt handle is freed for some errors and not freed for others. The caller has no way of knowing whether the handle was freed. It should either free or keep the handle for all errors.
- MariaDB 5.5, MariaDB 10.2 (with C/C), and MySQL (5.5–5.7) — they all free the handle unconditionally.
- MySQL manual shows an example of using the handle after mysql_stmt_close() returned an error, which implies that the handle should not be freed.