new_wa->size = area->size - size;
new_wa->address = area->address + size;
new_wa->backup = NULL;
- new_wa->user = NULL;
new_wa->free = true;
area->next = new_wa;
new_wa->size = target->working_area_size & ~3UL; /* 4-byte align */
new_wa->address = target->working_area;
new_wa->backup = NULL;
- new_wa->user = NULL;
new_wa->free = true;
}
c->free = false;
*area = c;
- /* user pointer */
- c->user = area;
-
print_wa_layout(target);
return ERROR_OK;
LOG_DEBUG("freed %"PRIu32" bytes of working area at address 0x%08"PRIx32,
area->size, area->address);
- /* mark user pointer invalid */
- /* TODO: Is this really safe? It points to some previous caller's memory.
- * How could we know that the area pointer is still in that place and not
- * some other vital data? What's the purpose of this, anyway? */
- *area->user = NULL;
- area->user = NULL;
-
target_merge_working_areas(target);
print_wa_layout(target);
if (restore)
target_restore_working_area(target, c);
c->free = true;
- *c->user = NULL; /* Same as above */
- c->user = NULL;
}
c = c->next;
}