Good point. But a free function _must_ be provided for data, making it optional for buffer can cause confusion.
Other than that, I'm fine with checking.