# HG changeset patch # User Jussi Judin # Date 1200611867 21600 # Node ID 1ee48928656b66761db90c10b945c6b9c403612e # Parent f6da5b8d401e86712ccd090cffb3dc24ba980aab Makes id3_field_finish to reset all the data that is requested. (Bugzilla #22) diff -r f6da5b8d401e -r 1ee48928656b src/libid3tag/field.c --- a/src/libid3tag/field.c Thu Jan 17 03:40:55 2008 +0200 +++ b/src/libid3tag/field.c Thu Jan 17 17:17:47 2008 -0600 @@ -120,36 +120,48 @@ case ID3_FIELD_TYPE_LATIN1: case ID3_FIELD_TYPE_LATIN1FULL: - if (field->latin1.ptr) + if (field->latin1.ptr) { free(field->latin1.ptr); + field->latin1.ptr = NULL; + } break; case ID3_FIELD_TYPE_LATIN1LIST: - for (i = 0; i < field->latin1list.nstrings; ++i) - free(field->latin1list.strings[i]); + if (field->latin1list.strings) { + for (i = 0; i < field->latin1list.nstrings; ++i) + free(field->latin1list.strings[i]); - if (field->latin1list.strings) free(field->latin1list.strings); + field->latin1list.nstrings = 0; + field->latin1list.strings = NULL; + } break; case ID3_FIELD_TYPE_STRING: case ID3_FIELD_TYPE_STRINGFULL: - if (field->string.ptr) + if (field->string.ptr) { free(field->string.ptr); + field->string.ptr = NULL; + } break; case ID3_FIELD_TYPE_STRINGLIST: - for (i = 0; i < field->stringlist.nstrings; ++i) - free(field->stringlist.strings[i]); + if (field->stringlist.strings) { + for (i = 0; i < field->stringlist.nstrings; ++i) + free(field->stringlist.strings[i]); - if (field->stringlist.strings) free(field->stringlist.strings); + field->stringlist.nstrings = 0; + field->stringlist.strings = NULL; + } break; case ID3_FIELD_TYPE_INT32PLUS: case ID3_FIELD_TYPE_BINARYDATA: - if (field->binary.data) - free(field->binary.data); + if (field->binary.data) { + free(field->binary.data); + field->binary.data = NULL; + } break; }