[A] Added more checks
This commit is contained in:
parent
58d7062c0f
commit
7b16e1aec1
@ -21,8 +21,11 @@ static FTABLE *create_basic_table()
|
||||
return table;
|
||||
}
|
||||
|
||||
int main()
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
(void)argc;
|
||||
(void)argv;
|
||||
|
||||
FTABLE *table = NULL;
|
||||
|
||||
table = ft_create_table();
|
||||
|
91
src/cell.c
91
src/cell.c
@ -114,23 +114,37 @@ int cell_printf(fort_cell_t *cell, size_t row, char *buf, size_t buf_len, const
|
||||
if (row >= hint_height_cell(cell, context)
|
||||
|| row < cell_padding_top
|
||||
|| row >= (cell_padding_top + buffer_text_height(cell->str_buffer))) {
|
||||
int k = snprint_n_chars_(buf, buf_len, buf_len - 1, space_char);
|
||||
return k;
|
||||
} else {
|
||||
int written = 0;
|
||||
int left = cell_padding_left;
|
||||
int right = cell_padding_right;
|
||||
|
||||
written += snprint_n_chars_(buf + written, buf_len - written, left, space_char);
|
||||
|
||||
if (cell->str_buffer)
|
||||
written += buffer_printf_(cell->str_buffer, row - cell_padding_top, buf + written, buf_len - written - right, context);
|
||||
else
|
||||
written += snprint_n_chars_(buf + written, buf_len - written, buf_len - written - right, space_char);
|
||||
written += snprint_n_chars_(buf + written, buf_len - written, right, space_char);
|
||||
|
||||
return written;
|
||||
return snprint_n_chars_(buf, buf_len, buf_len - 1, space_char);
|
||||
}
|
||||
|
||||
|
||||
#define CHECK_RESULT_AND_MOVE_DEV(statement) \
|
||||
do { \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k; \
|
||||
} while(0)
|
||||
|
||||
int dev = 0;
|
||||
int k = 0;
|
||||
int left = cell_padding_left;
|
||||
int right = cell_padding_right;
|
||||
|
||||
CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, left, space_char));
|
||||
|
||||
if (cell->str_buffer)
|
||||
CHECK_RESULT_AND_MOVE_DEV(buffer_printf_(cell->str_buffer, row - cell_padding_top, buf + dev, buf_len - dev - right, context));
|
||||
else
|
||||
CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, buf_len - dev - right, space_char));
|
||||
CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, right, space_char));
|
||||
|
||||
return dev;
|
||||
|
||||
clear:
|
||||
return -1;
|
||||
#undef CHECK_RESULT_AND_MOVE_DEV
|
||||
}
|
||||
|
||||
int cell_wprintf(fort_cell_t *cell, size_t row, wchar_t *buf, size_t buf_len, const context_t *context)
|
||||
@ -152,23 +166,36 @@ int cell_wprintf(fort_cell_t *cell, size_t row, wchar_t *buf, size_t buf_len, co
|
||||
if (row >= hint_height_cell(cell, context)
|
||||
|| row < cell_padding_top
|
||||
|| row >= (cell_padding_top + buffer_text_height(cell->str_buffer))) {
|
||||
int k = snprint_n_chars_(buf, buf_len, buf_len - 1, space_char);
|
||||
return k;
|
||||
} else {
|
||||
int written = 0;
|
||||
int left = cell_padding_left;
|
||||
int right = cell_padding_right;
|
||||
|
||||
written += snprint_n_chars_(buf + written, buf_len - written, left, space_char);
|
||||
|
||||
if (cell->str_buffer)
|
||||
written += buffer_printf_(cell->str_buffer, row - cell_padding_top, buf + written, buf_len - written - right, context);
|
||||
else
|
||||
written += snprint_n_chars_(buf + written, buf_len - written, buf_len - written - right, space_char);
|
||||
written += snprint_n_chars_(buf + written, buf_len - written, right, space_char);
|
||||
|
||||
return written;
|
||||
return snprint_n_chars_(buf, buf_len, buf_len - 1, space_char);
|
||||
}
|
||||
|
||||
#define CHECK_RESULT_AND_MOVE_DEV(statement) \
|
||||
do { \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k; \
|
||||
} while(0)
|
||||
|
||||
int dev = 0;
|
||||
int k = 0;
|
||||
int left = cell_padding_left;
|
||||
int right = cell_padding_right;
|
||||
|
||||
CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, left, space_char));
|
||||
|
||||
if (cell->str_buffer)
|
||||
CHECK_RESULT_AND_MOVE_DEV(buffer_printf_(cell->str_buffer, row - cell_padding_top, buf + dev, buf_len - dev - right, context));
|
||||
else
|
||||
CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, buf_len - dev - right, space_char));
|
||||
CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, right, space_char));
|
||||
|
||||
return dev;
|
||||
|
||||
clear:
|
||||
return -1;
|
||||
#undef CHECK_RESULT_AND_MOVE_DEV
|
||||
}
|
||||
|
||||
|
||||
|
24
src/fort.c
24
src/fort.c
@ -462,11 +462,13 @@ int ft_table_write_ln(FTABLE *FT_RESTRICT table, size_t rows, size_t cols, const
|
||||
const char* ft_to_string(const FTABLE *FT_RESTRICT table)
|
||||
{
|
||||
#define CHECK_RESULT_AND_MOVE_DEV(statement) \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k;
|
||||
do { \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k; \
|
||||
} while(0)
|
||||
|
||||
typedef char char_type;
|
||||
const char_type *empty_string = "";
|
||||
@ -572,11 +574,13 @@ clear:
|
||||
const wchar_t* ft_to_wstring(const FTABLE *FT_RESTRICT table)
|
||||
{
|
||||
#define CHECK_RESULT_AND_MOVE_DEV(statement) \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k;
|
||||
do { \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k; \
|
||||
} while(0)
|
||||
|
||||
typedef wchar_t char_type;
|
||||
const char_type *empty_string = L"";
|
||||
|
48
src/row.c
48
src/row.c
@ -118,11 +118,13 @@ int print_row_separator(char *buffer, size_t buffer_sz,
|
||||
const separator_t *sep, const context_t *context)
|
||||
{
|
||||
#define CHECK_RESULT_AND_MOVE_DEV(statement) \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k;
|
||||
do { \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k; \
|
||||
} while(0)
|
||||
|
||||
typedef char char_type;
|
||||
char new_line_char = '\n';
|
||||
@ -232,11 +234,13 @@ int wprint_row_separator(wchar_t *buffer, size_t buffer_sz,
|
||||
const context_t *context)
|
||||
{
|
||||
#define CHECK_RESULT_AND_MOVE_DEV(statement) \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k;
|
||||
do { \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k; \
|
||||
} while(0)
|
||||
|
||||
typedef wchar_t char_type;
|
||||
char new_line_char = L'\n';
|
||||
@ -473,11 +477,13 @@ int snprintf_row(const fort_row_t *row, char *buffer, size_t buf_sz, size_t *col
|
||||
size_t row_height, const context_t *context)
|
||||
{
|
||||
#define CHECK_RESULT_AND_MOVE_DEV(statement) \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k;
|
||||
do { \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k; \
|
||||
} while(0)
|
||||
|
||||
typedef char char_type;
|
||||
char space_char = ' ';
|
||||
@ -551,11 +557,13 @@ int wsnprintf_row(const fort_row_t *row, wchar_t *buffer, size_t buf_sz, size_t
|
||||
size_t row_height, const context_t *context)
|
||||
{
|
||||
#define CHECK_RESULT_AND_MOVE_DEV(statement) \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k;
|
||||
do { \
|
||||
k = statement; \
|
||||
if (k < 0) {\
|
||||
goto clear; \
|
||||
} \
|
||||
dev += k; \
|
||||
} while(0)
|
||||
|
||||
typedef wchar_t char_type;
|
||||
char space_char = L' ';
|
||||
|
@ -18,7 +18,7 @@ void test_vector_basic(void)
|
||||
|
||||
WHEN("Pushing less items than initial capacity") {
|
||||
for (i = 0; i < init_capacity; ++i) {
|
||||
item_t item = i;
|
||||
item_t item = (item_t)i;
|
||||
vector_push(vector, &item);
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ void test_vector_basic(void)
|
||||
|
||||
WHEN("Pushing more items than initial capacity") {
|
||||
for (i = 0; i < 2 * init_capacity; ++i) {
|
||||
item_t item = 2 * i;
|
||||
item_t item = (item_t)(2 * i);
|
||||
vector_push(vector, &item);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user