/* * Ver documentacion en el header */ int buffer_push(struct buffer_t* buffer, char c) { /* Si hay overflow, se suman otros CHAR_BUFFER_DEFAULT_SIZE bytes al tamanio del buffer */ if (buffer->current >= buffer->size) { char* new_buffer; LOG_DATA_DEBUG("Overflow while pushing char to buffer. Increase buffer size"); buffer->size += CHAR_BUFFER_DEFAULT_SIZE; LOG_DATA_DEBUG_IVAR(buffer->size); new_buffer = realloc(buffer->buffer, sizeof(char) * buffer->size); if (!new_buffer) { LOG_DATA_DEBUG("Realloc on buffer_push returned zero"); LOG_ERROR("Not enough memory for line buffer overflow"); return 0; } buffer->buffer = new_buffer; } buffer->buffer[buffer->current] = c; buffer->current++; return 1; }
int data_pushline(struct data_t* data, struct line_t* line) { /* Si hay overflow, se suman otras 512 lineas al tamanio de la tabla */ if (data->size >= data->capacity) { struct line_t** new_table; LOG_DATA_DEBUG("Overflow while pushing line to data buffer. Increase buffer size"); data->capacity += 512; LOG_DATA_DEBUG_IVAR(data->capacity); new_table = realloc(data->table, sizeof(struct line_t **) * data->capacity); if (!new_table) { LOG_DATA_DEBUG("Realloc on data_pushline returned zero"); LOG_ERROR("Not enough memory for data buffer overflow"); return 0; } data->table = new_table; } data->table[data->size] = line; data->size++; return 1; }