@@ -54,6 +54,8 @@ static void add_post_reg_state(VCPU *vcpu, unsigned int vcpu_index,
5454 assert (s == prev_reg -> content -> len );
5555 if (!memcmp (rdata -> data , prev_reg -> content -> data , s )) {
5656 // No change
57+ // Flush byte array
58+ g_byte_array_set_size (rdata , 0 );
5759 continue ;
5860 }
5961
@@ -62,6 +64,8 @@ static void add_post_reg_state(VCPU *vcpu, unsigned int vcpu_index,
6264 qemu_plugin_outs ("Failed to append opinfo.\n" );
6365 return ;
6466 }
67+ // Flush byte array
68+ g_byte_array_set_size (rdata , 0 );
6569 }
6670}
6771
@@ -72,7 +76,12 @@ static void add_pre_reg_state(VCPU *vcpu, unsigned int vcpu_index,
7276 qemu_plugin_reg_descriptor * reg =
7377 & g_array_index (current_regs , qemu_plugin_reg_descriptor , i );
7478 size_t s = qemu_plugin_read_register (reg -> handle , rdata );
79+ Register * prev_reg = g_ptr_array_index (vcpu -> registers , i );
80+ g_assert (!strcmp (prev_reg -> name , reg -> name ) && prev_reg -> handle == reg -> handle );
81+ memcpy (prev_reg -> content -> data , rdata -> data , prev_reg -> content -> len );
7582 frame_buffer_append_reg_info (fbuf , reg -> name , rdata , s , OperandRead );
83+ // Flush byte array
84+ g_byte_array_set_size (rdata , 0 );
7685 }
7786}
7887
0 commit comments