diff --git a/src/Directory.c b/src/Directory.c index fe59d12efae6959fc423728d555fa82cebbc3d1d..c861090b15d5bad4759e0f4fdff3d9793b7abb07 100644 --- a/src/Directory.c +++ b/src/Directory.c @@ -63,6 +63,8 @@ static void rebuild_index(Directory *directory) { break; } } + + fclose(fp); } Directory *Directory_init(char database_filename[100]) { @@ -111,6 +113,7 @@ void Directory_print(Directory *directory) { } printf("========================\n"); + fclose(fp); } bool Directory_append(Directory *directory, DirectoryRecord *record) { @@ -131,7 +134,7 @@ bool Directory_append(Directory *directory, DirectoryRecord *record) { fwrite(byte_array->items, 1, byte_array->size, fp); ByteArray_destroy(&byte_array); - uint64_t data_ptr = (uint64_t)ftell(fp) - 55; + uint64_t data_ptr = (uint64_t)ftell(fp) - DirectoryRecord_size_on_disk(); fclose(fp); bptree_insert(directory->index, hash_string(record->phone_number), data_ptr); @@ -152,6 +155,8 @@ DirectoryRecord *Directory_search(Directory *directory, char phone_number[11]) { ByteArray *byte_array = ByteArray_init(DirectoryRecord_size_on_disk()); fread(byte_array->items, 1, DirectoryRecord_size_on_disk(), fp); byte_array->size = DirectoryRecord_size_on_disk(); + fclose(fp); + DirectoryRecord *record = ByteArray_to_DirectoryRecord(byte_array); ByteArray_destroy(&byte_array); return record; diff --git a/src/DirectoryRecord.c b/src/DirectoryRecord.c index 7ca5d49d72093921250c3110264b8db5142e27e0..3ab7027cfe774ce5630200f8fe3170170daa13b2 100644 --- a/src/DirectoryRecord.c +++ b/src/DirectoryRecord.c @@ -49,15 +49,15 @@ ByteArray *DirectoryRecord_to_ByteArray(DirectoryRecord *record) { ByteArray *array = ByteArray_init(capacity); ByteArray_append(array, (uint8_t)record->deleted); - for (int j = 0; j < PHONE_NUMBER_MAX_LENGTH - 1; j++) { + for (int j = 0; j < PHONE_NUMBER_MAX_LENGTH_WITHOUT_NULL_CHARACTER; j++) { ByteArray_append(array, (uint8_t)record->phone_number[j]); } - for (int j = 0; j < NAME_MAX_LENGTH - 1; j++) { + for (int j = 0; j < NAME_MAX_LENGTH_WITHOUT_NULL_CHARACTER; j++) { ByteArray_append(array, (uint8_t)record->name[j]); } - for (int j = 0; j < SURNAME_MAX_LENGTH - 1; j++) { + for (int j = 0; j < SURNAME_MAX_LENGTH_WITHOUT_NULL_CHARACTER; j++) { ByteArray_append(array, (uint8_t)record->surname[j]); }