Skip to content

Commit c7074b0

Browse files
committed
Fix small issues
* Free table, input_buffer * Handle variably defined arrays at file scope * Include missing header reference
1 parent b892e44 commit c7074b0

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

db.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <stdio.h>
55
#include <stdlib.h>
66
#include <string.h>
7+
#include <stdint.h>
78
#include <unistd.h>
89

910
struct InputBuffer_t {
@@ -16,7 +17,6 @@ typedef struct InputBuffer_t InputBuffer;
1617
enum ExecuteResult_t {
1718
EXECUTE_SUCCESS,
1819
EXECUTE_DUPLICATE_KEY,
19-
EXECUTE_TABLE_FULL
2020
};
2121
typedef enum ExecuteResult_t ExecuteResult;
2222

@@ -38,8 +38,8 @@ typedef enum PrepareResult_t PrepareResult;
3838
enum StatementType_t { STATEMENT_INSERT, STATEMENT_SELECT };
3939
typedef enum StatementType_t StatementType;
4040

41-
const uint32_t COLUMN_USERNAME_SIZE = 32;
42-
const uint32_t COLUMN_EMAIL_SIZE = 255;
41+
#define COLUMN_USERNAME_SIZE 32
42+
#define COLUMN_EMAIL_SIZE 255
4343
struct Row_t {
4444
uint32_t id;
4545
char username[COLUMN_USERNAME_SIZE + 1];
@@ -64,7 +64,7 @@ const uint32_t EMAIL_OFFSET = USERNAME_OFFSET + USERNAME_SIZE;
6464
const uint32_t ROW_SIZE = ID_SIZE + USERNAME_SIZE + EMAIL_SIZE;
6565

6666
const uint32_t PAGE_SIZE = 4096;
67-
const uint32_t TABLE_MAX_PAGES = 100;
67+
#define TABLE_MAX_PAGES 100
6868

6969
struct Pager_t {
7070
int file_descriptor;
@@ -536,6 +536,11 @@ void read_input(InputBuffer* input_buffer) {
536536
input_buffer->buffer[bytes_read - 1] = 0;
537537
}
538538

539+
void close_input_buffer(InputBuffer* input_buffer) {
540+
free(input_buffer->buffer);
541+
free(input_buffer);
542+
}
543+
539544
void pager_flush(Pager* pager, uint32_t page_num) {
540545
if (pager->pages[page_num] == NULL) {
541546
printf("Tried to flush null page\n");
@@ -583,10 +588,12 @@ void db_close(Table* table) {
583588
}
584589
}
585590
free(pager);
591+
free(table);
586592
}
587593

588594
MetaCommandResult do_meta_command(InputBuffer* input_buffer, Table* table) {
589595
if (strcmp(input_buffer->buffer, ".exit") == 0) {
596+
close_input_buffer(input_buffer);
590597
db_close(table);
591598
exit(EXIT_SUCCESS);
592599
} else if (strcmp(input_buffer->buffer, ".btree") == 0) {
@@ -904,9 +911,6 @@ int main(int argc, char* argv[]) {
904911
case (EXECUTE_DUPLICATE_KEY):
905912
printf("Error: Duplicate key.\n");
906913
break;
907-
case (EXECUTE_TABLE_FULL):
908-
printf("Error: Table full.\n");
909-
break;
910914
}
911915
}
912916
}

0 commit comments

Comments
 (0)