/*
 * 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;
}
示例#2
0
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;

}