csv_writer_free has a different behaviour compared to csv_reader_free:
csv_writer_free:
void csv_writer_free(CSVWriter *writer) {
if (!writer) return;
if (writer->file && writer->owns_file) {
fflush(writer->file);
fclose(writer->file);
}
if (writer->config && writer->owns_config) {
csv_config_free(writer->config);
}
}
csv_reader_free:
void csv_reader_free(CSVReader *reader) {
if (reader) {
if (reader->file) {
fclose(reader->file);
reader->file = NULL;
}
if (reader->owns_arenas) {
if (reader->persistent_arena) {
arena_destroy(reader->persistent_arena);
free(reader->persistent_arena);
reader->persistent_arena = NULL;
}
if (reader->temp_arena) {
arena_destroy(reader->temp_arena);
free(reader->temp_arena);
reader->temp_arena = NULL;
}
free(reader);
} else {
reader->persistent_arena = NULL;
reader->temp_arena = NULL;
}
}
}
csv_writer_free doesn't set freed pointers to NULL
csv_writer_freehas a different behaviour compared tocsv_reader_free:csv_writer_free:csv_reader_free:csv_writer_freedoesn't set freed pointers to NULL