| bytes_after($param_2) < 2048 | 60 | | | | int write_buffer(int handle, const void *data, int size) | Problem | | bytes_after($param_2) < 2048 |
|
| | 61 | | | | { |
| | 62 | | | | BUFFER_REC *rec; |
| bytes_after(data) < 2048 | 63 | | | | const char *cdata = data; |
| | 64 | | | | int next_size; |
| | 65 | | | | |
| | 66 | | | | if (write_buffer_max_blocks <= 0) { |
| | 67 | | | | |
| | 68 | | | | return write(handle, data, size); |
| | 69 | | | | } |
| | 70 | | | | |
| | 71 | | | | if (size <= 0) |
| | 72 | | | | return size; |
| | 73 | | | | |
| | 74 | | | | rec = g_hash_table_lookup(buffers, GINT_TO_POINTER(handle));
|
| | 75 | | | | if (rec == NULL) {
|
| | 76 | | | | rec = g_new0(BUFFER_REC, 1);
|
| | 77 | | | | write_buffer_new_block(rec); |
| | 78 | | | | g_hash_table_insert(buffers, GINT_TO_POINTER(handle), rec);
|
| | 79 | | | | } |
| | 80 | | | | |
| | 81 | | | | while (size > 0) { |
| | 82 | | | | if (rec->active_block_pos == BUFFER_BLOCK_SIZE)
|
| bytes_after(cdata) < 2048 | 83 | | | | write_buffer_new_block(rec); |
| | 84 | | | | |
| &$unknown_111816 > bytes_after(cdata) | 85 | | | | next_size = size < BUFFER_BLOCK_SIZE-rec->active_block_pos ? | Problem | | &$unknown_111816 > bytes_after(cdata) |
|
| &$unknown_111819 > bytes_after(cdata) | 86 | | | | size : BUFFER_BLOCK_SIZE-rec->active_block_pos; | Problem | | &$unknown_111819 > bytes_after(cdata) |
|
| $param_3 > bytes_after($param_2) | 87 | | | | memcpy(rec->active_block+rec->active_block_pos, | Problem | | $param_3 > bytes_after($param_2) |
|
| next_size > bytes_after(cdata) | 88 | | | | cdata, next_size); | Problem | | next_size > bytes_after(cdata) |
|