- if (bitq_in_state.bit_pos == 0)
- {
- /* initialize field scanning */
- in_mask = 0x01;
- in_idx = 0;
- if (field->in_value)
- in_buff = field->in_value;
- else
- {
- /* buffer reallocation needed? */
- if (field->num_bits > bitq_in_bufsize * 8)
- {
- /* buffer previously allocated? */
- if (bitq_in_buffer != NULL)
- {
- /* free it */
- free(bitq_in_buffer);
- bitq_in_buffer = NULL;
- }
- /* double the buffer size until it fits */
- while (field->num_bits > bitq_in_bufsize * 8)
- bitq_in_bufsize *= 2;
- }
- /* if necessary, allocate buffer and check for malloc error */
- if (bitq_in_buffer == NULL && (bitq_in_buffer = malloc(bitq_in_bufsize)) == NULL)
- {
- LOG_ERROR("malloc error");
- exit(-1);
- }
- in_buff = (void*) bitq_in_buffer;
- }
- }
-