On 12/15/2016 02:29 PM, Dr. David Alan Gilbert wrote: >> + vmstate_handle_alloc(first_elem, field, opaque); >> + if (field->flags & VMS_POINTER) { >> + first_elem = *(void **)first_elem; >> + assert(first_elem); >> + } >> for (i = 0; i < n_elems; i++) { >> void *curr_elem = first_elem + size * i; >> >> @@ -310,12 +301,16 @@ void vmstate_save_state(QEMUFile *f, const >> VMStateDescription *vmsd, >> while (field->name) { >> if (!field->field_exists || >> field->field_exists(opaque, vmsd->version_id)) { >> - void *first_elem = vmstate_base_addr(opaque, field, false); >> + void *first_elem = opaque + field->offset; >> int i, n_elems = vmstate_n_elems(opaque, field); >> int size = vmstate_size(opaque, field); >> int64_t old_offset, written_bytes; >> QJSON *vmdesc_loop = vmdesc; >> >> + if (field->flags & VMS_POINTER) { >> + first_elem = *(void **)first_elem; >> + assert(first_elem); > Can you make that assert(first_elem || !n_elems) please. > and same above. > > Dave
Good catch! This could indeed be some dynamic length thing with 0 elements. I'm not sure if I'm going to respin this year though. Halil > >> + } >> for (i = 0; i < n_elems; i++) { >> void *curr_elem = first_elem + size * i; >> >> -- >> 2.8.4 >>